const time = '2016-11-16 00:00:00.000';
const date = new Date(time);
console.info(date);
似乎safari无法解析yyyy-MM-dd HH:mm:ss.SSS格式日期(它返回NaN),而chrome工作正常,我该如何解析?
答案 0 :(得分:2)
我会使用momentjs来处理javascript中的日期。简单的例子:
var time = '2016-11-16 00:00:00.000';
var m = moment.utc(time, "YYYY-MM-DD HH:mm:ss.SSS");
console.log(m)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.16.0/moment-with-locales.min.js"></script>
答案 1 :(得分:1)
尝试使用时刻js。 看看:moment.js parse with format 例如:
var mydate = moment("2016-11-16 00:00:00.000", "yyyy-MM-dd HH:mm:ss.SSS").toDate();
没有测试我放在那里的格式作为moment.js可能会使用不同的字符串来定义它但你可以在我上面写的doc链接中看到它
答案 2 :(得分:0)
如果Safari对DataTime格式很挑剔,你可以做一些简单的字符串替换&amp;串联。
const time = '2016-11-16 00:00:00.000';
const date = new Date(time.replace(' ','T') + 'Z');
console.info(date);
答案 3 :(得分:0)
这是一种不使用moment.js
的解决方案(尽管它是一个不错的库,但目前大于4MB):
formatDate: (value: Date) => {
const day = value.getDate();
const month = value.getMonth() + 1;
const year = value.getFullYear();
const hours = value.getHours();
const minutes = value.getMinutes();
const seconds = value.getSeconds();
const milliseconds = value.getMilliseconds();
return (
String(day).padStart(2, '0') +
'-' +
String(month).padStart(2, '0') +
'-' +
year +
' ' +
String(hours).padStart(2, '0') +
':' +
String(minutes).padStart(2, '0') +
':' +
String(seconds).padStart(2, '0') +
'.' +
String(milliseconds).padStart(3, '0')
);
},
};