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

时间:2014-07-16 13:56:41

标签: momentjs

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

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

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

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

1 个答案:

答案 0 :(得分:74)

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

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

    moment.utc(utcDateTime, utcDateTimeFormat).local().format(specifiedFormat)
    

    同样,在这里做事的方法不止一种。如果utcDateTime已采用ISO8601格式,并且包含Z-01:00之类的偏移量,则会将其考虑在内,您只需执行此操作:

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