2016-09-16 29 views
0

由于firefox的硬编码格式2016-09-16T05:46:57.745Z,当自定义日期格式为MM-DD-YYYY时,我无法使用isSame函数在Firefox中工作。Moment.js isSame()使用自定义格式在FireFox中不起作用

有没有在Firefox中使MM-DD-YYYYisSame?在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

某处在这里,你是不正确地解析日期字符串,并得到一个警告说'时刻建设回落到JS日期'。变量妈妈在哪里定义?这可能是发生这种情况的地方。 –

回答

0

不是一个问题,只要检查如果Firefox是给你用new Date()

Firefox的日期

Firefox's Date

Chrome的日期正确的时间戳

Chrome's Data

这可能是错误验证的可能原因。

+0

这是....并回到我原来的问题 – dman

0

mom变量是一个字符串不是在认可的ISO格式所以控制台会给你以下警告:

弃用警告:提供的值不是在一个认可的ISO格式。时刻构造会回落到js Date(),这在所有浏览器和版本中都不可靠。非ISO日期格式不鼓励,并将在即将发布的主要版本中删除。有关更多信息,请参阅http://momentjs.com/guides/#/warnings/js-date/

瞬间isSame会尽量给你mom字符串转换成时刻的对象,而是作为parsing docs说:

警告:解析字符串is inconsistent浏览器支持。由于没有关于哪种格式应该被支持的规范,所以某些浏览器中的工作方式在其他浏览器中不起作用。

为了解析比ISO 8601个字符串以外的任何一致的结果,你应该使用String + Format

正如你可以在链接的表格中看到,字符串MM-DD-YYYY格式在Firefox中不支持。

我建议你解析你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>

相关问题