首先,对于我的无知和我糟糕的英语技巧感到抱歉,我努力改进它们。所以这就是我的问题:
我想使用DateTime.Ticks(而不是Guid.NewGuid)来计算标识符,并且正在向我提出一个问题。在我目前的文化中,我们在改变官方时间的一年中有2天:在octuber中我们添加一小时,并在四月我们删除它。 它如何影响滴答值?如何计算滴答值?据我所知,基于https://msdn.microsoft.com/en-us/library/system.datetime.ticks%28v=vs.110%29.aspx它似乎无法成为重复值,因为基于文本(...)它不包括可归因于闰秒的刻度数(... 。) 可能会有重复的滴答声?,(也许其他问题是刻度持续多长时间,取决于计算机?) 如果我没有错,就无法重复。
此外,也许可能会有很多我误解的东西,所以我真的很抱歉......
答案 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
。)