【问题标题】:Moment JS setting TimeZone to EST - alloy/momentMoment JS 将 TimeZone 设置为 EST - 合金/力矩
【发布时间】:2017-09-11 08:02:06
【问题描述】:

我在 Appcelerator 的合金框架中使用 momentjs。我的 api 将日期返回为 - 2017-09-06T12:03:00.000Z 我正在使用下面的代码将此日期格式化为可读形式 -

var dt =  moment(record.createddate);
$.dateValue.text = moment(dt).format('lll');

但我得到的输出是 - Sep 6, 2017 5:33 PM,这是不正确的,因为保存在 db 中并从 api 返回的日期是 EST,而显示的日期是 GMT+0530。我应该如何格式化这个日期,以便我得到正确的日期值?

【问题讨论】:

  • 不应该moment('2017-09-06T12:03:00.000Z').format('lll') 返回Sep 6, 2017 2:03 PM 而不是Sep 6, 2017 5:33 PM 吗?
  • 完全应该,这就是我所期待的,但它返回Sep 6, 2017 5:33 PM。 :(

标签: date momentjs appcelerator-titanium titanium-alloy appcelerator-alloy


【解决方案1】:

我猜,在您的代码中,moment 的默认时区设置为 GMT+0530。像moment.tz.setDefault('Asia/Colombo') 这样的东西可以做到这一点。

您可以定义要在哪个时区显示您的日期。这应该适合你:

moment('2017-09-06T12:03:00.000Z').tz("Etc/GMT").format('lll')

或者如果你想要我在 cmets 中建议的值:

moment('2017-09-06T12:03:00.000Z').tz("Etc/GMT-2").format('lll')

关于moment.js时区的更多信息,您可以查看the moment.js timezone docs

希望这会有所帮助!

【讨论】:

  • 是的,这本来可以更容易解决,但问题是合金框架没有 MomentTimezone,而只有 Moment。我的意思是这部分.tz("Etc/GMT").format('lll') 在合金中是不可能的。
猜你喜欢
  • 2018-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-01
  • 2019-09-05
  • 2016-01-20
相关资源
最近更新 更多