javascript - 求助!后台返回的时间“2016-10-26T17:31:10”,要在前端分别显示年月日,周几以及具体时间,该怎么显示啊
天蓬老师
天蓬老师 2017-04-10 17:18:22
[JavaScript讨论组]

后台返回的时间格式是“2016-10-26T17:31:10”,要分成,hour、minute、weekday、day、month和year显示。之前想过用字符串分开,除此之外,用new Date('2016-10-26T17:31:10')也试过,果不其然的失败了。
不懂就问,求助!

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(7)
PHP中文网

Chrome,FireFox,IE9+测试可以使用new Date('2016-10-26T17:31:10')

PHPz

new Date('2016-10-26T17:31:10') 里面的“T”浏览器下面解析有差异,之前被这个坑死了!

PHPz

为什么我用 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会有坑,不同浏览器对于字符串的解析支持不同导致的。

大家讲道理

moment.js

你需要这个

PHPz

用万能的正则

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"]
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号