2013-04-06 50 views
2

我有一個ASP.NET WEB.API 4和控制器返回以下JSON:日期在.NET VS在javascript

{ date: "2013-03-14T00:00:00" } 

我解析它的客戶端(JavaScript的)上:

date = new Date(json.date); // json.date being "2013-03-14T00:00:00" 

後來我做了自檢,並在體內的日期已經改變格式

{ date: "2013-03-13T23:00:00.000Z" } 

我的猜測是,一些時區的東西已經被b中加入JavaScript或瀏覽器?

因爲DB存儲日期爲INT(YYYYMMDD)i執行以下皈依的:

public static int ToInt(DateTime date) 
{ 
    return date.Year * 10000 + date.Month * 100 + date.Day; 
} 

所得int是然後休息一天:(

但是如果我做

date.ToLocalTime() 

在調用ToInt方法之前,它看起來很好。

我是否支持這是正確的,並且是ToLocalTime()一個足夠的解決方案,還是我需要花費一天時間讀取.NET和JavaScript中的UTC日期?

謝謝!

+2

歡迎來到地獄稱爲「JS日期」嘗試使用類似datejs或momentjs的庫:/ – Aviatrix 2013-04-06 14:12:32

+0

您將日期存儲爲'int(yyyymmdd)'???你使用什麼數據庫? – Bergi 2013-04-06 15:30:08

+0

@Bergi sql 2000.問題是誰在90年代寫了sw回的:) – Cotten 2013-04-08 05:02:36

回答

1
date = new Date(json.date); // json.date being "2013-03-14T00:00:00" 

,是什麼時區是在json.date?如果沒有關於此的信息,JS Date constructor會認爲它是客戶端的本地時區(而且這是非常隨機的)。如果你希望它是UTC,只需添加"Z"您的ISO-datestring後:

date = new Date(json.date+"Z"); 

而且總是用[gs]etUTC(FullYear|Month|Date|…)方法即可。