2012-12-09 35 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()),而不是解析。 –