繁体   English   中英

时区的日期时间

[英]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.DayDateTime.Now.Day之间是否存在差异。 从逻辑上讲,您会认为没有任何东西,但是我确实想指出Now属性的一件事:这不是魔术。 在访问Now属性之后并在执行.Date.Day表达式时,代码运行并经过了一段时间。 在此期间,原来使用的Now值会过时。 此表达式非常快,几乎不需要任何时间-但它不为零。 如果不小心,可能会创建竞争条件。

其次,您想了解时区和获得一致的日期。 这里的诀窍是,您是否真的只关心列出的美国时区,以及是否在任何时区的午夜附近都有时间。 但是,实际上最好的选择是查看DateTime数据类型的另一个成员:它是.UtcNow属性。 无论您处于哪个时区,它都将返回相同的值。您可以使用它来评估一个在所有时区都一致的时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM