2012-12-09 36 views
0

我有以下格式的日期:解析特定日期時間格式在Javascript

2012-12-09T02:08:34.6225152Z

我使用的datejs javascript library並希望分析上面的日期,但我似乎無法到找出正確的格式字符串。我試過以下,但它不起作用。

Date.parse('2012-12-09T02:08:34.6225152Z', 'yyyy-MM-ddTHH:mm:ss.fffffffZ'); 

如果更容易,我也打開解析原生javascript中的字符串。

回答

0

我最終通過改變字符串的格式,因爲它被送到的Javascript解決這個問題。取而代之的2012-12-09T02:08:34.6225152Z我用下面的代碼改變了JSON序列輸出1363607010099

var serializer = new JsonNetSerializer(new JsonSerializerSettings 
{ 
    DateFormatHandling = DateFormatHandling.MicrosoftDateFormat, 
    NullValueHandling = NullValueHandling.Ignore 
}); 

然後我改變了我的javascript使用此功能,我發現解析日期:

String.prototype.toDate = function() { 
    "use strict"; 
    var match = /\/Date\((\d{13})\)\//.exec(this); 
    return match === null ? null : new Date(parseInt(match[1], 10)); 
}; 

最後,我使用這一位代碼輸出日期(利用DateJS庫):

myTime.toDate().toString('h:mm:ss tt dd-MMM-yyyy') 

它工作。這看起來有點駭人聽聞,所以我更願意考慮替代方案。

+0

建設性的建議:使用toDate函數擴展字符串對象有點難看,因爲不是所有的字符串都可以轉換爲日期。爲什麼該函數可用於所有可能的字符串,而您只需要它爲一個特定的字符串? 「some」.toDate()沒有任何意義,而「今天」.toDate()或「2013-1-1」.toDate()將有意義,但返回null - 僅支持:) – Andries

+0

好點。這並不是說我的解決方案是一個很好的解決方案,但是我發現問題仍然是開放的,並希望用一個被接受的答案來解決問題,這是我最終解決問題的方法。如果你有更好的選擇來解決原始問題問題,然後請張貼您的答案。=) –

1

DateJS似乎不支持毫秒分析。 DateJS附加功能上的u FormatSpecifier可以工作(尚未測試過)。

http://code.google.com/p/datejs/wiki/FormatSpecifiers

+0

不幸的是,這是行不通的。 DateJs額外的東西只用於輸出格式(即toString()),而不是解析。 –