构造具有高于毫秒的精度的日期时间的更好方法

时间:2009-10-07 01:36:14

标签: datetime constructor precision

我刚刚经历了一个意外错综复杂的过程来定义日期时间。

基础数据的精度高于毫秒

我最终构建了一个中间日期时间到最近的秒,在刻度(10 000到毫秒)中读取它的值,调整刻度然后创建日期时间我实际上想要

我期望构造函数将秒作为双精度并且采用字符串日期/时间格式说明符。似乎都不存在。

任何人都有一个好的替代方法吗?

2 个答案:

答案 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点之间需要多长时间,只想要当前时间,比毫秒更精确,我认为你有点过分,可能不需要那么精确,或者你是额外的精确度毫无意义。