我有一个 Windows文件时间:
一个 64 位值,表示自 1601 年 1 月 1 日 (UTC) 以来的 100 纳秒间隔数)
我需要将它向上舍入到最接近的偶数秒,如此处所述。
我到目前为止的代码:
var originalDt = DateTime.FromFileTimeUtc(input);
// round it UP to the nearest Second
var newDt = originalDt.AddMilliseconds(1000 - originalDt.Millisecond);
// then if our new Second isn't even
if (newDt.Second % 2 != 0)
{
// add one second to it, then it'll be even
newDt = newDt.AddSeconds(1);
}
return newDt.ToFileTimeUtc();
不太好用......它将130790247821478763变成130790247820008763,我在130790247800000000之后。
数学不是我最擅长的科目……我可以安全地将最后四位数字归零吗?或者我应该忘记上面的代码,只将最后八位数字完全归零?或者……另一种方式?