Moment JS - 解析UTC并转换为Local,反之亦然

Chi*_*jib 39 momentjs

我已经阅读了文档,对于如何继续进行操作有点困惑.有类似的问题,但没有人谈论解析格式中收到的特定日期和本地和utc日期之间的交换.

  1. 我收到一个本地日期时间,本地日期时间格式,需要以特定格式从中生成utc datetime,这就是我认为我应该这样做的方式. moment(dateTime,localDateTimeFormat).utc().format(specifiedFormat);

  2. 我以特定格式接收utc datetime,并且必须以特定格式生成特定于语言环境的日期时间.我该怎么做? moment.utc(utcDateTime, utcDateTimeFormat).toDate();给我javascript日期我相信.我怎么格式化呢?我是否必须使用生成的Date对象创建新时刻?

我能做的另一件事就是获取时区然后格式化.我想知道我在这里采取了错误的路线.请帮忙.

Mat*_*int 77

  • 在第1项 - 是的,这是一种方法.但是,如果输出格式只是ISO8601 UTC时间戳,那么您可以toISOString直接调用原始时刻.由于输出暗示了UTC,因此utc()再次调用将是多余的.

  • 在第2项 - 就像utc()功能一样,还有一个local()功能.一旦你有一个moment对象,你可以使用toDateformat与文档中描述的功能或任何其他.不,您不需要使用生成的日期对象创建新时刻.

    moment.utc(utcDateTime, utcDateTimeFormat).local().format(specifiedFormat)
    
    Run Code Online (Sandbox Code Playgroud)

    同样,在这里做事的方法不止一种.如果utcDateTime它已经是ISO8601格式,并且包含a Z或者偏移量-01:00,那么这将被考虑在内,你可以简单地这样做:

    moment(utcDateTime).format(specifiedFormat)
    
    Run Code Online (Sandbox Code Playgroud)
  • 在你提到的关于时区的最后一项,你很难说出你在问什么.您应该在新问题中详细说明具体细节.