エポック時間から までのミリ秒を返す単純なメソッドを作成するとDateTime.UtcNow
、適切な答えが得られます。ただし、任意の日付とエポック時間の間のミリ秒を返すメソッドを作成すると、最後の 3 桁は常にゼロになります。「任意の日付」とは、DateTime.Parse("任意の日付文字列") の出力をメソッドに渡すことを意味します。私が理解できる限り、.Parse によって返される DateTime オブジェクトは有効数字をすべて返していません。
試験方法:
static void GetMillis()
{
DateTime dUtc = DateTime.UtcNow;
DateTime epoch = new DateTime(1970,1,1,0,0,0,DateTimeKind.Utc);
double utcmillis = (dUtc - epoch).TotalMilliseconds;
String timestamp = dUtc.ToString();
DateTime arbitrary = (DateTime.Parse(timestamp));
Console.WriteLine("Milliseconds between DateTime.UtcNow {0} \nand epoch time {1} are {2}", dUtc, epoch, utcmillis);
Console.WriteLine("Milliseconds between arbitrary date {0} \nand epoch time {1} are {2}", arbitrary, epoch, (arbitrary - epoch).TotalMilliseconds);
}
出力:
C:\src\vs\epochConverter\epochConverter\bin\Debug
{powem} [54] --> .\epochConverter.exe -debug
Milliseconds between DateTime.UtcNow 8/26/2012 11:12:31 PM
and epoch time 1/1/1970 12:00:00 AM are 1346022751385.8
Milliseconds between arbitrary date 8/26/2012 11:12:31 PM
and epoch time 1/1/1970 12:00:00 AM are 1346022751000
私がグロテスクに間違ったことをしているのか、ここで数学を理解していないのかわかりません。MSDN で調査しましたが、この違いに関連するものは見つかりません。説明されているようにミリ秒を計算できるようにしたいと本当に思っています-それは可能ですか?
ありがとう。
mp