IState
我的问题是dateTime类型的“ testDate”,我使用格式设置了currentDate.ToString()并在不解析dateTime类型“ testDate”变量的情况下分配了此字符串值,但其工作原因和方式?
使用这些DateTime格式设置的东西有什么好的做法?
答案 0 :(得分:1)
它有效,因为Opton Strict
已关闭。这是非常糟糕。您需要使用Option Strict
。总是。它可以保护您免受多种严重错误的影响。
例如,该代码似乎可以正常工作,但是它并没有真正按照您的想象去做,因为DateTime
之类的testDate
值没有完全可读的格式。此代码的最终结果以二进制格式存储,并且似乎只能产生正确的值,因为在输出结果时会发生字符串的额外转换。
说到转换,要把最终值存入testDate
变量中,您首先要编写的代码将当前时间转换为字符串,该字符串对区域性敏感,因此代价非常高(读:慢)和容易出错的操作。然后,它必须将字符串值解析回DateTime值,这与您刚才执行的相同的缓慢且容易出错的转换相反。
但是您可以跳过所有这些。您想要这样的代码:
Dim testDate As DateTime = DateTime.Today
或至少
Dim testDate As DateTime = DateTime.Now.Date
这些在很小的时间内产生相同的结果。就国际化问题而言,它们更安全,避免来回进行所有额外转换,类型安全,启用Option Strict,并且编写和维护的总体代码少得多。
使用这些DateTime格式设置的东西有什么好的做法?
需要理解的是,您不必担心DateTime值的格式,直到显示给用户的最后一刻为止。这意味着不在此代码中,不在保存到文件或数据库中,并且不在诸如缩短时间之类的操作中。想要将带DateTime的字符串用于任何内容,但向真实用户显示该值或从用户读取一个值,则表明出现了很多错误。