2009-10-30 152 views
1

我有一個jQuery函數的getJSON一個問題,操作URL不會觸發因爲我傳遞的參數之一是一個JavaScript日期,但該行動預計C#的DateTime ..javascript日期和JSON日期時間

是否有可能格式化Javascript日期以使它與c#DateTime兼容?

回答

2

使用此功能從Mozilla Date documentation採取:

/* use a function for the exact format desired... */ 
function ISODateString(d){ 
function pad(n){return n<10 ? '0'+n : n} 
return d.getUTCFullYear()+'-' 
     + pad(d.getUTCMonth()+1)+'-' 
     + pad(d.getUTCDate())+'T' 
     + pad(d.getUTCHours())+':' 
     + pad(d.getUTCMinutes())+':' 
     + pad(d.getUTCSeconds())+'Z' 
} 

.NET不會有任何問題處理一個ISO格式的日期。您可以使用DateTime.Parse(...)來處理ISO格式的字符串。

2

如果你想一個解決方案來從JSON表示一個Javascript日期(/日期(1350035703817)/),你可以使用this function

function parseJsonDate(jsonDate) { 
    var offset = new Date().getTimezoneOffset() * 60000; 
    var parts = /\/Date\((-?\d+)([+-]\d{2})?(\d{2})?.*/.exec(jsonDate); 

    if (parts[2] == undefined) 
     parts[2] = 0; 

    if (parts[3] == undefined) 
     parts[3] = 0; 

    return new Date(+parts[1] + offset + parts[2]*3600000 + parts[3]*60000); 
}; 

爲我工作一樣的魅力。

1

我用這個函數比上面的要短。

function ParseJsonDate(dateString) { 
    var milli = dateString.replace(/\/Date\((-?\d+)\)\//, '$1'); 
    var date = new Date(parseInt(milli)); 
    return date; 
} 

還發現,將它們轉換回來的方法:

function ToJsonDate(date) { 
    return '\/Date(' + date.getTime() + ')\/'; 
} 
+2

這似乎並不關心這個,有時追加到JSON日期時區信息。 – crush 2013-03-11 15:51:59