【问题标题】:Time not working as expected using moment.js使用 moment.js 的时间没有按预期工作
【发布时间】:2013-08-14 21:26:46
【问题描述】:

我正在开发一个 Web 应用程序,我想在其中找到不同时区的当地时间。我正在使用moment.js 来完成这项任务。问题是返回时间没有按预期工作。例如:

moment().tz("Europe/London")._d;

将返回 2013 年 8 月 15 日星期四 01:22:23 GMT+0300(GTB 夏令时间),但同时伦敦的当地时间是 2013 年 8 月 14 日星期四 22:22: 23 所以有 3 小时的差异。谁能解释为什么会发生这种情况并提出解决方案?谢谢。

【问题讨论】:

  • 操作系统中的时区设置是否正确?
  • @zerkms 目前在我的电脑上,我在欧洲/雅典时区,但我想在与我的电脑不同的时区找到当地时间。所以我想我的操作系统时间并不重要。但是是的,它是正确的。
  • @Juhana 是的,我已经构建了欧洲/伦敦时区。
  • @Giorgos Manoltzas:我的问题是关于时区是否正确。确实无所谓,但应该是正确的。

标签: javascript momentjs


【解决方案1】:

不要使用._d 属性。下划线表示它是内部的。 (因为那是Date,它总是会显示为好像在本地时区,因为这就是 JavaScript 的工作原理。)

改为使用其中一种输出方法,例如.format()

【讨论】:

    【解决方案2】:
    var time= moment.tz(value).format('LTS'),
    var date= moment.tz(value).format('LL'),
    var abbr= moment.tz.zone(value).abbr(moment.utc().valueOf()), //PST,IST
    var name= moment.tz.zone(value).name); //Asia/Kolkata
    

    【讨论】:

    • 谁能解释为什么会发生这种情况并提出解决方案? -- 这可能是一个解决方案,但如果您添加解释发生了什么以及为什么这可能是一个解决方案。
    猜你喜欢
    • 2018-07-13
    • 1970-01-01
    • 2013-02-14
    • 2015-11-09
    • 1970-01-01
    • 2016-11-07
    • 1970-01-01
    • 2021-10-19
    • 2020-03-18
    相关资源
    最近更新 更多