moment()和moment(new Date())之间的区别是什么?

3
$> moment.version
'2.18.1'
$> moment('Mon, 02 Jan 2017 06:00:00 -0800').format()
'2017-01-02T01:00:00-05:00'
$> moment(new Date('Mon, 02 Jan 2017 06:00:00 -0800')).format()
'2017-01-02T09:00:00-05:00'

我以为 moment 构造函数可以简单地替代 new Date() 构造函数来解析字符串,适用于所有 JS 原生 Date 可接受的格式。

这是我理解有问题还是一个 bug?感觉像是个 bug,但如果我只是个白痴的话,我宁愿不提交问题。

在他们的文档中,这似乎也是一种可接受的格式:https://momentjs.com/docs/#/parsing/now/


2
最新的方法是将JS原生Date实例转换为moment.js的实例,它是Date的包装器并拥有更多的函数。 - choasia
第一个可能使用 moment.js 解析器来猜测格式,也可能使用内置解析器。第二个始终使用内置解析器。 - RobG
1个回答

2
  1. 看起来它们的格式无法识别,请自行查看
  2. 同时:-08 00-08-8也可以使用,但不建议。请遵循此ISO时间格式:https://en.wikipedia.org/wiki/ISO_8601

$(function(){
 var d = new Date('Mon, 02 Jan 2017 06:00:00 -0800');
 $('#test1').text(d);
 $('#test2').text(moment('Mon, 02 Jan 2017 06:00:00 -0800').format());
 $('#test3').text(moment('Mon, 02 Jan 2017 06:00:00 -08:00').format());
  $('#test4').text(moment('Mon, 02 Jan 2017 06:00:00 -800').format());
 $('#test5').text(moment(new Date('Mon, 02 Jan 2017 06:00:00 -0800')).format());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
<div id="test1"></div><br>
<div id="test2"></div><br>
<div id="test3"></div><br>
<div id="test4"></div><br>
<div id="test5"></div>


是的,很奇怪,因为 momentjs 文档实际上说应该可以识别格式,这就是问题所在。我提交了一个 bug,我们会看到他们会说什么。(另外不幸的是,我无法控制格式,它来自外部服务。现在我只是用 new Date() 包装它) - JonG

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接