代码之家  ›  专栏  ›  技术社区  ›  theJuls

用瞬间捕捉不同时区的部分日期

  •  0
  • theJuls  · 技术社区  · 6 年前

    这可能是一个奇怪的问题,但我有一个时刻日期,稍后我将需要抓住它的不同用途的一部分。例如,我抓取一天并显示正在做的事情 date.date() 从…起 moment

    我有一个力矩对象,它是由字符串创建的:

    const properDate = moment.tz(date, 'YYYY-MM-DD hh:mm:ss.SSS', 'America/New_York')
    

    根据我的理解,如果我能得到正确的时区时间,我会这样做

    properDate.format()
    

    但这会将其转换为字符串。我希望能够在正确的时区获取时间和天数。所以基本上,当我这么做的时候 properDate.hours() 我会在UTC的时间内拿到,但我想在 America/New_York .

    例如,我想输入的日期字符串是 2018-12-31 02:00:00.000 +00:00

    适当时数() 2 ,但我想把它放在纽约时区 21

    我想解决这个问题的方法是使用 new Date 手动设置每一个,也许?大概是这样的:

    const dateWithTimezoneObject = new Date(properDate.year(), properDate.month(), properDate.date(), properDate.hours(), properDate.minutes())
    

    但这听起来有点乱,我想知道是否有更好的方法来完成这件事,可能是通过这个时刻。

    那么,有没有一种方法可以让我在适当的时区内得到矩物体的各个部分呢?

    2 回复  |  直到 6 年前
        1
  •  1
  •   Matt Johnson-Pint    6 年前

    我相信你想要的是:

    var m = moment("2018-12-31 02:00:00.000 +00:00","YYYY-MM-DD HH:mm:ss.SSS Z")
               .tz('America/New_York');
    
    m.hours() //=> 21
    

    有几件事:

    • 注意:提供的输入格式区分大小写,需要与输入字符串匹配。在你的问题中,你有 hh 而不是 HH ,也没有提供 Z 对于时区偏移。

    • 不同口味的咖啡 tz 功能。 moment.tz() 用于构造一个时刻,其中输入值以该时区为单位。 moment().tz() 用于将某个时刻转换为不同的时区。

    • 虽然我刚刚用过 moment 在我上面的例子中,您可以使用 moment.tz , moment.utc moment.parseZone +00:00 在输入字符串中。如果实际上没有偏移量,那么您应该使用 时刻utc

      var m = moment.utc("2018-12-31 02:00:00.000","YYYY-MM-DD HH:mm:ss.SSS")
                    .tz('America/New_York');
      
    • Date 表示不同时间点的对象。一般来说,一旦你使用矩,你应该避免使用 对象,如果可以改用矩函数。

        2
  •  1
  •   gengns    6 年前
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
    </head>
    <body>
      Test
      <script src="moment.js"></script>
      <script src="moment-timezone-with-data.js"></script>
      <script>
        const date = '2018-12-31 02:00:00.000 +00:00' 
        const new_york = moment(date,'YYYY-MM-DD HH:mm:ss.SSS Z')
          .tz('America/New_York')
        document.body.textContent = 
          `day: ${new_york.dates()} hour: ${new_york.hours()}`
      </script>
      </body>
    </html>
    

    https://momentjs.com/timezone/

    推荐文章