Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DateTime.Ticks属性值_C#_Datetime_Timezone - Fatal编程技术网

C# DateTime.Ticks属性值

C# DateTime.Ticks属性值,c#,datetime,timezone,C#,Datetime,Timezone,DateTime.Now.Ticks的值不应该与DateTime.UtcNow.Ticks相同吗?我检查了它们的值,发现差异代表我当前时区与UTC的偏移量。我在这里遗漏了什么?因为时区不同而不同。因为时区不同而不同。这是对象设计的一部分 在其他库和语言中,例如JavaScript的日期类型,该值绑定到UTC,并且通常使用1970-01-01的历元 但是在.NET中,Ticks值与年、月、日和其他属性所基于的参照系相关。它使用0001-01-01的历元 在DateTime中,有一个名为Kind的属

DateTime.Now.Ticks的值不应该与DateTime.UtcNow.Ticks相同吗?我检查了它们的值,发现差异代表我当前时区与UTC的偏移量。我在这里遗漏了什么?

因为时区不同而不同。

因为时区不同而不同。

这是对象设计的一部分

在其他库和语言中,例如JavaScript的日期类型,该值绑定到UTC,并且通常使用1970-01-01的历元

但是在.NET中,Ticks值与年、月、日和其他属性所基于的参照系相关。它使用0001-01-01的历元

在DateTime中,有一个名为Kind的属性:

如果种类是DateTimeKind.Utc,那么您知道该值与Utc相关。 如果种类是DateTimeKind.Local,那么您知道该值与本地时区相关。 如果种类为DateTimeKind.Unspecified,则您不知道所使用的时区引用。你只需要有一个日期和时间。 您可以将DateTime.UtcNow.Ticks和DateTime.Now.Ticks之间的差异作为当前时区偏移量,因为DateTime.Now具有本地种类,而DateTime.UtcNow具有Utc种类。因此DateTime.Now的刻度基于本地时区,而DateTime.UtcNow的刻度基于UTC

DateTimeOffset类型可用于解决此问题。刻度仍相对于显示的值,但偏移量可用于始终将这些刻度调整回UTC参考系

如果您不喜欢这种情况(许多人不喜欢),另一种选择是使用库中的类型


顺便说一下,我将更详细地介绍这些信息,并将其与我的Pluralsight课程中的其他编程语言进行比较

这是对象设计的一部分

在其他库和语言中,例如JavaScript的日期类型,该值绑定到UTC,并且通常使用1970-01-01的历元

但是在.NET中,Ticks值与年、月、日和其他属性所基于的参照系相关。它使用0001-01-01的历元

在DateTime中,有一个名为Kind的属性:

如果种类是DateTimeKind.Utc,那么您知道该值与Utc相关。 如果种类是DateTimeKind.Local,那么您知道该值与本地时区相关。 如果种类为DateTimeKind.Unspecified,则您不知道所使用的时区引用。你只需要有一个日期和时间。 您可以将DateTime.UtcNow.Ticks和DateTime.Now.Ticks之间的差异作为当前时区偏移量,因为DateTime.Now具有本地种类,而DateTime.UtcNow具有Utc种类。因此DateTime.Now的刻度基于本地时区,而DateTime.UtcNow的刻度基于UTC

DateTimeOffset类型可用于解决此问题。刻度仍相对于显示的值,但偏移量可用于始终将这些刻度调整回UTC参考系

如果您不喜欢这种情况(许多人不喜欢),另一种选择是使用库中的类型


顺便说一下,我将更详细地介绍这些信息,并将其与我的Pluralsight课程中的其他编程语言进行比较

你为什么期望它们是一样的?日期/时间是不同的-因此它们在刻度中的表示是不同的。为什么您希望它们是相同的?日期/时间不同-因此它们在刻度中的表示方式不同。