日期时间格式和 ToString 格式


Dim testDate As DateTime = DateTime.MinValue
testDate = DateTime.Now.ToString("yyyy'/'MM'/'dd")

我的问题是"testDate",它是 dateTime 类型,我用格式做了 currentDate.ToString(( 并分配这个字符串值而不解析 dateTime 类型"testDate"变量,但它为什么以及如何工作?

使用这些日期时间格式设置内容的好做法是什么?

它之所以有效,是因为Opton Strict已关闭。这是非常糟糕的。您需要使用Option Strict.总是。它可以保护您免受多种严重错误的影响。

例如,该代码似乎有效,但它并没有真正执行您认为的功能,因为像testDate这样的DateTime值根本没有人类可读的格式。此代码的最终结果以二进制格式存储,并且似乎仅生成正确的值,因为在输出结果时会发生对字符串的额外转换。

说到转换,为了将最终值放入testDate变量中,您拥有的代码首先将当前时间转换为字符串,这是对区域性敏感的,因此是一种非常昂贵(读取:缓慢(且容易出错的操作。然后,它必须将字符串值解析回 DateTime 值,这与你刚刚执行的相同缓慢且容易出错的转换相反。

但是你可以跳过所有这些。你想要的代码更像这样:

Dim testDate As DateTime = DateTime.Today

或至少

Dim testDate As DateTime = DateTime.Now.Date

这些在一小部分时间内产生相同的结果。它们在国际化问题方面更安全,避免了所有额外的来回转换,类型安全,启用了 Option Strict,并且编写和维护的整体代码要少得多。

使用这些日期时间格式设置内容的好做法是什么?

要了解的是,在向用户显示 DateTime 值之前,您不必担心 DateTime 值的格式,直到最后一刻。这意味着不在此代码中,不保存到文件或数据库,也不在截断时间等操作中。想要将带有 DateTime 的字符串用于任何内容,但向真实用户显示值或从用户读取值表明出了大问题。

相关内容

最新更新