我刚刚经历了一个意外错综复杂的过程来定义日期时间。
基础数据的精度高于毫秒。
我最终构建了一个中间日期时间到最近的秒,在刻度(10 000到毫秒)中读取它的值,调整刻度然后创建日期时间我实际上想要。
我期望构造函数将秒作为双精度并且采用字符串日期/时间格式说明符。似乎都不存在。
任何人都有一个好的替代方法吗?
答案 0 :(得分:4)
没有直接的方法来基于一秒的分数来实例化DateTime
。正如您所发现的,最接近的是使用刻度线。像这样的函数至少可以使您不必在每种情况下创建多个DateTime
。
public DateTime DateTimeFromFractionalSeconds(int year, int month, int day, int hour, int minute, double seconds)
{
return new DateTime(year, month, day, hour, minute).AddTicks((long)(seconds * 1000000000));
}
你是对的,设计师可以包含这样的构造函数。但是,DateTime
类不是基于秒,而是大约几分钟。我意识到你想要小数秒,但是你能真正证明小数秒比分数分钟更合理吗?还是几小时? DateTime
类基于刻度。这是它处理的最小的不可分割的度量单位,这就是最细粒度的构造函数以刻度表示的原因。
答案 1 :(得分:1)
如果您想使用此日期时间来计算运行代码所需的时间,那么使用Stopwatch秒表类会更好。它使用DateTime对象无法使用的高精度计时器。如果你没有计算2点之间需要多长时间,只想要当前时间,比毫秒更精确,我认为你有点过分,可能不需要那么精确,或者你是额外的精确度毫无意义。