【发布时间】:2013-01-25 22:55:06
【问题描述】:
我正在尝试使用 Jon Skeet(和其他人)的 Noda Time 框架。
我正在尝试存储当前(即时)。 Instant 是根据长刻度创建的,但当前刻度的当前计数是多少?
是吗:
Instant now = new Instant(DateTime.Now.ToUniversalTime().Ticks);
和或?
Instant now = Instant.FromDateTimeUtc(DateTime.Now.ToUniversalTime());
它们是等价的吗?我这样做对吗?
PS,如果 Jon 回答这个问题 - 我想提议一个 Instant.Now 属性。
PS2 我知道标题包含一个标签,但它不会让我有一个简短的“Instant.Now”标题。
【问题讨论】:
-
Instant.Now对属性来说是一个糟糕的用例,因为它会在“幕后”改变值(BCL 遇到同样的问题:DateTime.Now)。Instant.GetCurrent()会更好,new Instant()可能是最好的。免责声明:我对 Noda Time 的曝光率为零。 -
@Jon 没有
Instant.GetCurrent()- 请参阅Instant docs. Instant 也只有一个构造函数Instant(Int64) -
但无论如何,这两个定义是等价的。
Ticks是一个绝对量,不随时区变化。 -
等待 Jon Skeet 出现,100% 准确回答,获得所有支持,让快乐的露营者离开 ChuckSavage
-
@ChuckSavage:
Instant.Now的缺失是非常刻意的。它是不可测试的。这就是IClock存在的原因。