【问题标题】:how to 'offset' a date/time using moment如何使用时刻“偏移”日期/时间
【发布时间】:2017-02-25 00:21:56
【问题描述】:

我有一个带日期的输入框(用户选择)。我想使用 moment.js 来抵消时区选择的日期,例如“欧洲/伦敦”。因此,假设我的日期是(2017 年 2 月 24 日),我如何获得时间给我日期:

当前日期时间是 2/24/2017 4:18:00

所以我希望它返回 2/25/2017 12:18:00,这将是英国伦敦的当前时间?

var x = moment().tz(dateStart, 'London/Europe').format();

但它现在只是一直给我日期时间。

谢谢。

【问题讨论】:

    标签: javascript momentjs


    【解决方案1】:

    确保您还加载了时区数据,例如moment-timezone-with-data-2010-2020.js 2010 年到 2020 年期间有吗。

    解析字符串时应该包含要解析的格式,否则解析器只是在猜测。

    'London/Europe' 不是有效的IANA timezone identifier,首先是地区,然后是城市,所以:

    console.log(moment('2/24/2017','MM/DD/YYYY').tz('Europe/London').format());
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.11/moment-timezone-with-data-2010-2020.js"></script>

    请注意,当您仅解析日期时,时间组件将在一天开始时设置为本地午夜,即本地 00:00:00,具体取决于主机系统时区设置。

    【讨论】:

      【解决方案2】:

      您基本上是在尝试获取特定时区的当前时间 您几乎正确,但我认为没有必要传递日期,因为moment()constructor 将获取您所在位置的当前日期时间,而您正在尝试错误的时区字符串,正确的是 - 'Europe/London'

      my current time in India now - 
      moment().format('DD MM YYYY HH:MM:SS');
      "08 03 2017 11:03:27"
      
      for London time zone
      moment().tz('Europe/London').format('DD MM YYYY HH:MM:SS');
      "08 03 2017 05:03:34"
      

      【讨论】:

        猜你喜欢
        • 2021-10-03
        • 2011-05-18
        • 1970-01-01
        • 2015-03-07
        • 2013-09-13
        • 1970-01-01
        • 2021-12-19
        • 1970-01-01
        • 2016-10-29
        相关资源
        最近更新 更多