2014-04-22 55 views
0

我的服務器向我發送了以下值13928550480000,我知道它代表日期爲2014年2月19日。但我無法弄清楚如何從長期價值中獲得日期。迄今爲止的長期價值c#

我試圖用C#日期時間類,但沒能獲得正確的日期,即2014年2月19日

 long dateL = 13928550480000; 
     DateTime dt = new DateTime(dateL); 
     var dtstr = dt.ToString("MM/dd/yyyy"); 

     var onlyDate = dt.Date; 

     DateTime start = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); 
     DateTime date = start.AddMilliseconds(dateL).ToLocalTime(); 
     var dtstr1 = date.ToString("MM/dd/yyyy"); 
+0

什麼是您的服務器? –

+1

「,我知道代表日期2014年2月19日」如何?什麼是轉換公式? –

+1

可能重複的[如何將Long類型的日期時間轉換爲具有正確時區的日期時間](http://stackoverflow.com/questions/4964634/how-to-convert-long-type-datetime-to-datetime-with-correct時區) – Tawnos

回答

1

它看起來像你的源數長轉換爲日期的各種方式表示數自1970年1月1日 10度毫秒的增量(如果不是這樣,一個錯字):

long dateL = 13928550480000; 

    DateTime start = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); 
    DateTime date = start.AddMilliseconds(dateL/10).ToLocalTime(); 
             // *** 
             //  ^------ 

    var dtstr1 = date.ToString("MM/dd/yyyy"); // 02/19/2014 

我懷疑時差無關你的問題。

+0

你代碼給「05/18/2411」 – Kaddy

+0

嘗試使用1392855048000. – GeorgeChond

+0

如果你有你會得到5/18/2411從13928550480000(四個零)開始,忘記在指定的地方除以10。 –

1

你在大數字的末尾寫了太多的零嗎?也就是說,它真的以0000結束而不僅僅是000嗎?

如果它確實是0000,那麼它似乎是以100微秒爲增量(每秒10,000次增量)測量時間。但它也可能在格林尼治標準時間給你時間,你期望從中獲得當地時間。從1970年1月1日開始的1392855048秒的時間將是2014年2月20日午夜10分48秒。根據您的時區,這可能是當地時間2月19日的某個時間。

+0

我認爲D Stanley的答案中的代碼與我剛纔所說的相同。 –

+0

是的,謝謝。我喜歡你的解釋。 – Kaddy