私は Windows FILETIMEを持っています:
1601 年 1 月 1 日 (UTC) からの 100 ナノ秒間隔の数を表す 64 ビット値)
here で説明されているように、最も近い偶数秒に切り上げる必要があります。
私がこれまでに持っているコード:
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 の後です。
数学は私の得意科目ではありません... 下 4 桁を安全にゼロにすることはできますか? または、上記のコードを忘れて、最後の 8 桁を完全にゼロにする必要がありますか? それとも... 別の方法ですか?