[英]Date time for time zones
在C#中
DateTime.Now.Day
DateTime.Now.Date.Day
=>实际差异是多少?
例如,当我在PST区域时,请说8 PM-08/26,当我打电话时
DateTime.Now.Day //26
DateTime.Now.Date.Day //26
例如,当我在美国东部标准时间区时,请说8 PM-08/26,当我打电话时
DateTime.Now.Day //27
DateTime.Now.Date.Day //27
我想从日期时间或日期中获取Day,以便我想使用在任何PST / EST / CST时区都可以保持一致的日期,有什么想法吗?
绝对没有区别(请参见DateTime Structure
文档)。 .Date
标识符只是从您正在使用的DateTime
对象中剥离时间信息。
如果要保持一致的时间,请使用UTC时间和DateTime.UtcNow
属性。
简短答案:使用DateTime.UtcNow 。
长答案:
按照表达式和类型系统将其细分:
DateTime
是具有几个静态成员的值类型。 这些成员之一是Now
。 静态的Now
属性返回一个DateTime
结构的实例,该实例填充有当前时间的值。 但这仍然是DateTime类型的实例。
Date
成员可用于DateTime
类型的实例,并返回一个新的DateTime实例,该实例的时间分量的值归零。 但是它仍然只是一个DateTime类型的实例。
Day
成员可用于DateTime
类型的实例,并返回该月当前日期的整数。
首先,您想知道DateTime.Now.Date.Day
和DateTime.Now.Day
之间是否存在差异。 从逻辑上讲,您会认为没有任何东西,但是我确实想指出Now
属性的一件事:这不是魔术。 在访问Now
属性之后并在执行.Date.Day
表达式时,代码运行并经过了一段时间。 在此期间,原来使用的Now
值会过时。 此表达式非常快,几乎不需要任何时间-但它不为零。 如果不小心,可能会创建竞争条件。
其次,您想了解时区和获得一致的日期。 这里的诀窍是,您是否真的只关心列出的美国时区,以及是否在任何时区的午夜附近都有时间。 但是,实际上最好的选择是查看DateTime数据类型的另一个成员:它是.UtcNow
属性。 无论您处于哪个时区,它都将返回相同的值。您可以使用它来评估一个在所有时区都一致的时间。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.