我正在学习将Javascript作为一种新语言,并且找到了一种习惯于JS处理reg exp和字符串操作的好方法,即将包含日期的字符串解析为Date对象。

我有一个"2005-05-28"形式的字符串。将其解析为Date对象的最佳Javascript-y方法是什么?

最佳答案

非正则表达式

我不了解“最佳”,但您不需要正则表达式:

var str = "2005-05-28";
var parts = str.split("-");
var dt = new Date(parseInt(parts[0], 10),
                  parseInt(parts[1], 10) - 1,
                  parseInt(parts[2], 10));


Live example

它使用String#split来中断-字符上的字符串,然后使用Date构造函数来接受年,月(从0开始)和日(从1开始)。

正则表达式

请注意,如果您确实要使用正则表达式,则可以:

var str = "2005-05-28";
var parts = str.match(/^(\d{1,4})-(\d{1,2})-(\d{1,2})$/);
if (parts) {
    var dt = new Date(parseInt(parts[1], 10),
                      parseInt(parts[2], 10) - 1,
                      parseInt(parts[3], 10));
}


Live example

它使用带有捕获组的正则表达式,通过String#match进行匹配,这将返回在索引0处具有完全匹配项的数组,然后是捕获组。但是为了我的钱,正则表达式并没有真正为您买任何东西。

超越

如果您的日期字符串变得更复杂或可能有所不同,我会考虑将问题解决到DateJS之类的库中。但是,如果您的格式是常规格式,那么您就很成功。

关于javascript - 将包含特定格式的日期的字符串解析为Javascript中的Date对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4434514/

10-13 21:47
查看更多