【问题标题】:Moment.js showing invalid date in Mozilla Firefox [duplicate]Moment.js 在 Mozilla Firefox 中显示无效日期 [重复]
【发布时间】:2020-03-16 06:16:56
【问题描述】:

我有一个来自服务器的 UTC 格式的日期,我正在尝试将其转换为用户的本地时区,然后根据我的需要格式化日期。在 chrome 浏览器中它工作正常,但在 Mozilla 浏览器中它一直显示无效日期。下面是我将日期转换为本地日期的代码。

 getUtcTimeAsPerUser(date: any) {
   moment
      .utc(date)
      .local()
      .format("YYYY-MM-DD HH:mm:ss");}

我使用了很多不同的方法,但都没有成功。我根据堆栈中的一些建议尝试了下面的代码,但它在 Mozilla 中不起作用。

const local = moment.utc(date).local();
const momentFormat = moment(local, 'YYYY-MM-DD HH:mm:ss').format('YYYY-MM-DD HH:mm:ss')

请帮助我或建议任何其他方法将日期转换为用户的本地时区。谢谢。

【问题讨论】:

  • 函数中的date参数可以采用什么格式?能举个例子吗
  • @VandanaChandola 来自服务器,日期是这样的“02-27-2020 13:15:25”
  • 嗯,您的输入格式似乎是 MM-DD-YYYY HH:mm:ss 而不是 YYYY-MM-DD HH:mm:ss。改变它,我相信它应该有效。像这样:let newDate: string = moment.utc(date, "MM-DD-YYYY HH:mm:ss").local().format("YYYY-MM-DD HH:mm:ss");

标签: javascript angular momentjs


【解决方案1】:

Chrome 支持的日期格式比 Firefox 多。在 Firefox 中,您应该使用 RFC2822 或 ISO 8601 格式的日期——例如2011-12-01T01:23:45+06:00 在 ISO 8601 中。

另外,您可以在创建 MomentJS 对象时指定输入格式:

const local = moment.utc(date, 'MM-DD-YYYY HH:mm:ss').local();
const momentFormat = moment(local, 'YYYY-MM-DD HH:mm:ss').format('YYYY-MM-DD HH:mm:ss');

【讨论】:

  • 目前来自服务器的格式是这样的 "02-27-2020 13:15:25" ,如果我先把这个日期转换成ISO格式再进行操作,那么它可以工作吗?
  • 看我的更新,创建momentjs对象时可以指定格式。
猜你喜欢
  • 1970-01-01
  • 2016-04-05
  • 2014-02-27
  • 2015-02-04
  • 1970-01-01
  • 2017-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多