可以重复DateTime.Ticks值,因为文化时间的变化

时间:2015-04-07 10:09:33

标签: c#

首先,对于我的无知和我糟糕的英语技巧感到抱歉,我努力改进它们。所以这就是我的问题:

我想使用DateTime.Ticks(而不是Guid.NewGuid)来计算标识符,并且正在向我提出一个问题。在我目前的文化中,我们在改变官方时间的一年中有2天:在octuber中我们添加一小时,并在四月我们删除它。 它如何影响滴答值?如何计算滴答值?据我所知,基于https://msdn.microsoft.com/en-us/library/system.datetime.ticks%28v=vs.110%29.aspx它似乎无法成为重复值,因为基于文本(...)它不包括可归因于闰秒的刻度数(... 。) 可能会有重复的滴答声?,(也许其他问题是刻度持续多长时间,取决于计算机?) 如果我没有错,就无法重复。

此外,也许可能会有很多我误解的东西,所以我真的很抱歉......

1 个答案:

答案 0 :(得分:6)

即使没有 DST更改,由于系统时钟的粒度,您可以观察DateTime.Now.Ticks多次返回相同的值。

但是随着DST的改变,如果你使用DateTime.Now,你确实会看到每年重复一个小时的相同值。 Ticks属性只是"自DateTime时代以来的刻度数,无论表示什么类型的值"。 (DateTime值可以是三种"种类之一" - 通用,本地或未指定。它是all a bit of a mess。)

如果你使用DateTime.UtcNow,你不应该看到如果你的系统时钟只是向前移动......但它完全有可能改变系统时钟,手动或自动方式,纠正它们漂移。基本上,它本身并不是唯一性的良好来源。

(就刻度线的长度而言 - DateTime中的刻度总是 100ns。Stopwatch的情况并非如此,您需要使用Frequency属性查找刻度线的长度,或使用Elapsed属性将经过时间查找为TimeSpan。)

相关问题