为什么萤火虫不打破日期

why firefox does not break the date?

本文关键字:破日 日期 萤火虫 为什么      更新时间:2024-03-22

请帮助打破组件上的日期线。

https://jsfiddle.net/xwvrtLt1/2/

在chrome中,这是有效的(控制台显示日期没有问题)。但在FF中它不起作用(控制台显示错误)

js:

var checkNeedZero = function(num) { 
    if(num < 10) { num = '0' + num; };
    return num;
};             

var dateRaw = '2016-03-14 17:37:12';
var date = new Date(dateRaw),
    monthNum = checkNeedZero(date.getMonth()),
    day = checkNeedZero(date.getDate()),
    year = date.getFullYear(),
    hours = checkNeedZero(date.getHours()),
    minutes = checkNeedZero(date.getMinutes());
console.log(date);
var vv = new Date(dateRaw);
console.log(vv);
console.log('---'); 

日期格式无效,但两种不同的浏览器处理它的方式不同(Chrome在无效日期附近工作,而Firefox则会抛出错误)。

为了使其有效,您可以在日期和时间之间添加一个T字符:

var dateRaw = '2016-03-14T17:37:12';

但我得到了一个特定格式的日期。我不能改变它

在这种情况下,您需要使用JavaScript:添加T字符

var dateRaw = '2016-03-14 17:37:12'.replace(' ', 'T');

这将用Date.parse(string)字符替换(空格)字符。

在Date构造函数中,它们使用与NaN中相同的机制,后者的优点是它不会为无效日期抛出错误,而是返回CCD_6。

此链接:https://msdn.microsoft.com/en-us/library/ff743760(v=vs.94).aspx#Anchor_2描述了哪些日期被认为是有效的,主要是简化的ISO8601格式(YYYY-MM-DDTHH:MM:ss.sssZ-仅适用于Internet Explorer 9及以上版本,不适用于怪癖模式),然后尝试完整的格式列表:https://msdn.microsoft.com/en-us/library/ff743760(v=vs.94).aspx#Anchor_4

ECMA脚本标准6.0支持ISO8601格式:http://www.ecma-international.org/ecma-262/6.0/#sec-日期时间字符串格式,但如果失败,可以尝试特定的供应商实现。

一句话:你可以用大写的"T"分隔日期和时间,也可以用斜线代替破折号,使日期有效。