2011-12-23 116 views
1

我有一個巨大的問題,試圖找出從我從中獲取信息的REST端點的JSON響應。DateTime格式與REST和JSON

是回來看起來像這樣1319068800000

,如果我試圖將這個值轉換,像這樣的日期:

DateTime currentServerTime = DateTime.FromFileTimeUtc(1319068800000); 

我得到這樣的輸出:1601年1月2日12時38分26秒PM ...顯然是錯的:(

我正在使用的REST端點有一個很酷的HTML顯示的JSON響應,它們的格式相同的值看起來像這樣:2011/10/20 00:00:00 UTC

有人可以幫我解釋一下這個嗎?我試圖更新通過此REST API的日期,當我發送的日期使用此代碼

DateTime.Now.ToFileTimeUtc().ToString(); 

我得到這樣的結果129691518811163201,當我送這個給API它炸彈出來說我有一個有效的日期。謝謝!

回答

4

@Bill和@Christofer都是對的。不過,您仍然需要將Unix時間轉換爲DateTime。這裏有一個小功能,這是否:Convert a Unix timestamp to a .NET DateTime

代碼從網站(由西蒙Chiaretta)報價:

static DateTime ConvertFromUnixTimestamp(double timestamp) 
{ 
    DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0); 
    return origin.AddSeconds(timestamp); 
} 


static double ConvertToUnixTimestamp(DateTime date) 
{ 
    DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0); 
    TimeSpan diff = date - origin; 
    return Math.Floor(diff.TotalSeconds); 
} 
+0

+1爲轉換功能,我通常自己使用完全相同的東西。 –

3

它看起來像1970年1月1日12:00 am GMT以來的毫秒數。這是Java中通常使用的內部時間戳格式。

user=> (java.util.Date. 1319068800000) 
Date Wed Oct 19 20:00:00 EDT 2011 
+0

我認爲這是通常被稱作Unix時間或POSIX時間。 –

+0

自1970年1月1日以來的秒數是,但Java確實毫秒。 – Bill

3

你可以將其轉換爲一個DateTime之前1000分返回的數字。從Unix時代開始它似乎以毫秒爲單位返回。