我正在学习将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/