由于firefox的硬编码格式isSame
,当自定义日期格式为MM-DD-YYYY
时,我无法让2016-09-16T05:46:57.745Z
函数在Firefox中运行。
是否可以在Firefox中使用MM-DD-YYYY
制作isSame
?在Chrome中不是问题
jo = new moment().format('MM-DD-YYYY')
"09-16-2016"
mom
"09-16-2016"
moment(jo, 'MM-DD-YYYY')
Object { _isAMomentObject: true, _i: "09-16-2016", _f: "MM-DD-YYYY", _isUTC: false, _pf: Object, _locale: Object, _d: Date 2016-09-16T05:00:00.000Z }
moment(jo, 'MM-DD-YYYY').isSame(mom)
false
moment(jo, 'MM-DD-YYYY').isSame(mom, 'day')
false
答案 0 :(得分:0)
答案 1 :(得分:0)
您mom
变量是一个不在识别的ISO格式中的字符串,因此控制台会给您以下警告:
弃用警告:提供的值不是公认的ISO格式。时刻构造回落到js Date(),这在所有浏览器和版本中都不可靠。不鼓励使用非ISO日期格式,并将在即将发布的主要版本中删除。有关详细信息,请参阅http://momentjs.com/guides/#/warnings/js-date/。
片刻isSame
会尝试将mom
字符串转换为时刻对象,但正如parsing docs所说:
警告:浏览器支持解析字符串is inconsistent。因为没有关于应该支持哪种格式的规范,所以在某些浏览器中有效的功能在其他浏览器中不起作用。
要解析除ISO 8601字符串以外的任何内容的一致结果,您应该使用String + Format
正如您在链接表中看到的那样,Firefox中不支持MM-DD-YYYY
格式的字符串。
我建议你解析mom
字符串指定格式,这样你就会有:
var jo = moment();
var mom = "09-16-2016";
// Parse string into moment object, specifying format
mom = moment(mom, 'MM-DD-YYYY');
var eq1 = moment(jo, 'MM-DD-YYYY').isSame(mom);
console.log(eq1); // false, different hours/minutes
var eq2 = moment(jo, 'MM-DD-YYYY').isSame(mom, 'day')
console.log(eq2); // true
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.15.0/moment.min.js"></script>