如果我編寫一個簡單方法返回曆元時間和DateTime.UtcNow
之間的毫秒數,我會得到一個正確的答案。但是,如果我編寫一個方法來返回任意日期和紀元時間之間的毫秒數,則最後三位數字始終爲零。 '一些任意日期'意味着我將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中進行了研究,找不到任何與此區別有關的內容。我真的希望能夠按照描述計算millis - 是否有可能?
謝謝。
熔點
感謝您的詳細解答。我想這個挑戰是有缺陷的想法。因爲我希望兩個日期之間的毫秒_difference_和任何給定的日期必須可以表示爲毫秒數。但是,我想,那並不是真正發生在DateTime數學上的事情。用例是將演示格式中的日期字符串轉換爲DateTime對象,然後進行處理。我曾看過MSDN文章「如何:在日期和時間值中顯示毫秒數」,但我一直無法爲我工作。 – naugiedoggie
如果用例需要你解析一個字符串,那麼最後的'000'就可能沒問題。這可能只是由於毫秒 - 自1970年以來在某些系統中作爲日期的常見內部表示,並且與此有關。 –
考慮到它後,我相信我已經更好地理解計算日期數學時實際發生的情況。我有一個工具,它應該在_epoch時間內產生數值_但有時候會以毫秒和幾秒鐘的速度被噴出。這顯然是一個錯誤,但對我來說這是一個黑盒子。所有這些問題的結局都是爲了計算這些差異而製作最簡單的工具。我不喜歡做我不瞭解他們如何工作的事情。 ;-) – naugiedoggie