我有一个像这样的日期字符串,
'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')
时,它说无效日期,因为这是本地化日期。那是我尝试用正则表达式来评估另一种方法的时候。现在我确定用" "
代替"T"
,用new Date
。
您可以对空间进行分割,并使用Date.parse()
来获得所需的结果:
yourDate = new Date(Date.parse('2015-09-24T03:45:19-0700 +0530'.split(' ')[0]))
"T"
被Date.parse()
正确解释。
您可以使用任何日期方法
Regex在这里是多余的。您可以使用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;
<pre id="output"></pre>
编辑
lastIndexOf
将不适用于负时区,例如-530
。在这种情况下,您可以使用匹配-
的regex,后面跟着四位数字来分割字符串。
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;
<pre id="output"></pre>