【问题标题】:Moment JS - parse UTC and convert to Local and vice versa [duplicate]Moment JS - 解析UTC并转换为本地,反之亦然[重复]
【发布时间】:2014-07-16 13:56:40
【问题描述】:

我浏览了文档,对如何继续操作有点困惑。 有类似的问题,但没有人谈论解析以格式接收的特定日期以及在本地日期和 utc 日期之间交换。

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

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

我可以做的另一件事是获取时区,然后进行格式化。我想知道我是否在这里走错了路。请帮忙。

【问题讨论】:

  • 查看其他 SO 帖子,包括 stackoverflow.com/questions/15133326/…
  • 我确实绕过了 SO,但找不到关于解析 utc 日期的准确答案。获取这一刻的 UTC 是可以的,但是解析并转换回本地是我的目标。无论如何,谢谢。
  • 此问题不应标记为重复。另一个问题可能类似,但与此不同,因为它涉及传递单个日期部分,而不是从具有格式的字符串中解析。

标签: momentjs


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

  • 关于第 2 项 - 就像 utc() 函数一样,还有一个 local() 函数。拥有moment 对象后,您可以使用toDate 或format 或文档中描述的任何其他函数。不,您不需要使用生成的日期对象创建新时刻。

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

    同样,这里有不止一种方法可以做事。如果utcDateTime 已经是ISO8601 格式,并且包含Z 或-01:00 之类的偏移量,那么这将被考虑在内,您只需这样做:

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

【讨论】:

  • 是的,我认为我可以使用 local() 方法,然后对其进行调整。谢谢。
  • utcDateTimeFormat?
  • @kuhaku - 来自 OP。具体来说,第二个参数中的格式字符串应该与第一个参数中提供的数据匹配。
猜你喜欢
  • 2016-09-20
  • 1970-01-01
  • 2017-08-05
  • 1970-01-01
  • 1970-01-01
  • 2021-10-03
  • 2023-03-17
  • 1970-01-01
  • 2015-04-18
相关资源
最近更新 更多