2012-01-23 61 views
2

使用非常好的signalR庫,我有一個廣播消息,它向客戶端瀏覽器發送ChangeDetail類型的對象。發送的對象包括一個DateTime屬性:從信號序列化的解析日期時間R

var change = new ChangeDetail(); 
change.TimeOfChange = DateTime.Now(); 

當我把這個給客戶,SignalR需要的對象的JSON序列化的護理,但在javascript代碼,當我檢查對象的客戶端,它看起來像這個:

console.log (change.TimeOfChange); --> "/Date(1327332563969)/" 

我怎麼把它回到js Date對象中?我可能寫一個正則表達式來獲取數字,並用該數字Date.parse,但這似乎有點麻煩...?

回答

3

我通常在String中添加了以下原型擴展。

String.prototype.toDate = function() { 
    "use strict"; 

    var match = /\/Date\((\d{13})\)\//.exec(this); 

    return match === null ? null : new Date(parseInt(match[1], 10)); 
}; 

基本上你可以去change.TimeOfChange.toDate()取回實際的Date對象

+0

酷,將其添加到字符串的擴展是一個好主意。 「嚴格使用」是做什麼的? –

+0

@Matt - 參見http://stackoverflow.com/questions/1335851/what-does-use-strict-do-in-javascript-and-what-is-the-reasoning-behind-it –