后台返回的时间格式是“2016-10-26T17:31:10”,要分成,hour、minute、weekday、day、month和year显示。之前想过用字符串分开,除此之外,用new Date('2016-10-26T17:31:10')
也试过,果不其然的失败了。
不懂就问,求助!
后台返回的时间格式是“2016-10-26T17:31:10”,要分成,hour、minute、weekday、day、month和year显示。之前想过用字符串分开,除此之外,用new Date('2016-10-26T17:31:10')
也试过,果不其然的失败了。
不懂就问,求助!
为什么我用 new Date('2016-10-26T17:31:10')
成功了?
你什么浏览器?
系统:macOS 10.12
浏览器:chrome 54.0.2840.71 (64-bit)
你是想要什么效果啊?
这样行不:
var str = "2016-10-26T17:31:10";
var strA = str.split(/[a-zA-Z]/);
var d = {}
d.year = strA[0].split('-')[0];
d.month = strA[0].split('-')[1];
d.day = strA[0].split('-')[2];
d.hour = strA[1].split(':')[0];
d.minute = strA[1].split(':')[1];
d.second = strA[1].split(':')[2];
d.weekday = str.match(/[a-zA-Z]/)[0];
话说还是让后端直接传秒数吧...
踩过坑的路过,建议对于这种情况提前和后台确定好时间的格式,然后不要用
new Date('2016-10-26T17:31:10')
因为你永远不知道其他浏览器是否支持这种格式,确定好格式后,前端自己做日期分割,判断格式是否正确,再使用
new Date(year, month[, date[, hours[, minutes[, seconds[, milliseconds]]]]]);
这样的方式来创建日期对象,就不会有跨浏览器的问题了。
当然,如果使用timestamp的话也是可以的,就是传string会有坑,不同浏览器对于字符串的解析支持不同导致的。
用万能的正则
var a = /^(20\d{2})-(\d{1,2})-(\d{1,2})T(\d{1,2}):(\d{1,2}):(\d{1,2})$/;
a.exec('2016-10-26T17:31:10'); //["2016-10-26T17:31:10", "2016", "10", "26", "17", "31", "10"]
10 回答11.6k 阅读
2 回答3.1k 阅读✓ 已解决
3 回答2.7k 阅读✓ 已解决
2 回答2.1k 阅读✓ 已解决
4 回答2.1k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
Chrome
,FireFox
,IE9+
测试可以使用new Date('2016-10-26T17:31:10')