我有一个这样的日期字符串,
'2015-09-24T03:45:19-0700 +0530'
我正在提取日期和时间,如下所示
match(/[0-9]+:+[0-9]+:[0-9]+(?=.*?-)/) // returns 03:45:19
match(/[0-9]+-+[0-9]+-[0-9]+(?=.*?T)/) // returns 2015-09-24
有没有办法改进上面的正则表达式?
修改
当我尝试new Date('2015-09-24T03:45:19-0700 +0530')
时,它表示无效日期,因为这是本地化日期。那是我试用Regex评估另一种方法的时候。现在,我决定将"T"
替换为" "
并使用new Date
。它工作正常。
答案 0 :(得分:2)
您可以拆分空格,并使用Date.parse()
获得所需的结果:
yourDate = new Date(Date.parse('2015-09-24T03:45:19-0700 +0530'.split(' ')[0]))
"T"
正确解释Date.parse()
。
然后,您可以使用任何方法来约会。
答案 1 :(得分:1)
正则表达式在这里是一种矫枉过正。您可以使用substr
和split
(假设字符串的格式相同)
T
var str = '2015-09-24T03:45:19-0700 +0530';
var arr = str.substr(0, str.lastIndexOf('-')).split('T');
var date = arr[0],
time = arr[1];
document.getElementById('output').innerHTML = 'Date = ' + date + ' <br />Time = ' + time;
&#13;
<pre id="output"></pre>
&#13;
修改强>
lastIndexOf
不适用于负时区,例如。 -530
。在这种情况下,您可以使用匹配-
后跟四位数的正则表达式来分割字符串。
var str = '2015-09-24T03:45:19-0700 -0530';
var arr = str.split(/-\d{4}/)[0].split('T');
var date = arr[0],
time = arr[1];
document.getElementById('output').innerHTML = 'Date = ' + date + ' <br />Time = ' + time;
&#13;
<pre id="output"></pre>
&#13;