<p>moment().toISOString() 错误,如果传入第 18 个,则返回第 17 个</p>

创建于 2013-07-23  ·  6评论  ·  资料来源: moment/moment

这个问题似乎是由这里介绍的moment().toISOString()引起的:

http://momentjs.com/docs/#/displaying/as -iso-string/
时刻().toISOString();

如果我这样做,我可能会但在控制台中:

    n = moment.utc(new Date('2013-07-18T00:00:00+01:00'))

它将返回:

 Thu Jul 18 2013 00:00:00 GMT+0100 (GMT Daylight Time)

现在,如果我调用toISOString( ) ,日期会突然变成 17 日:

  n.toISOString()

以上将返回第 17 个而不是第 18 个:

  "2013-07-17T23:00:00.000Z"

最有用的评论

那可能对你有用:

> moment().format('YYYY-MM-DD[T]HH:mm:ss.SSSZZ')
'2013-07-23T14:54:20.176-0700'

或者

> moment().format('YYYY-MM-DD[T]HH:mm:ss.SSS')
'2013-07-23T14:54:20.176'

如果你不关心时区,只想显示时间。

所有6条评论

如您所见, toISOString始终以 UTC 显示时间(除了以特定方式显示之外)。

@ichernev ,我不完全明白你的意思? 以特定方式显示是不是意味着我17号通过,我应该得到18号? 我如何在 18 日通过并回到 18 日? 谢谢。

那可能对你有用:

> moment().format('YYYY-MM-DD[T]HH:mm:ss.SSSZZ')
'2013-07-23T14:54:20.176-0700'

或者

> moment().format('YYYY-MM-DD[T]HH:mm:ss.SSS')
'2013-07-23T14:54:20.176'

如果你不关心时区,只想显示时间。

@ichernev ,非常感谢。

您可以使用 toISOString 的 keepOffset 参数:

toISOString(keepOffset?: boolean): 字符串;

=>

时刻()。toISOString(真)

这真的对吗?

moment('1970-01-01').toISOString()

输出:

1969-12-31T23:00:00.000Z

我认为大多数人将特定日期传递给时刻并将其格式化为 toISOString 会希望日期不会改变。 如果 keepOffset 使函数以更可预测的方式运行,为什么不默认为 true?

我知道momentES2015的原生

此页面是否有帮助?
0 / 5 - 0 等级