无法将UTC转换为PST,反之亦然

时间:2019-05-12 08:05:27

标签: javascript timezone momentjs

我正在使用momentjs#timezone lib将otherGrass转换为时区,反之亦然。

现在,面临转换方面的问题。

她是我的代码。

UTC

现在,想再次进入UTC

var myDate = "2019-05-11 18:22:40" //stored in DB utc format
myDate = timezone(myDate).tz("America/Los_Angeles").format("YYYY-MM-DD HH:mm:ss"); //converted in America/Los_Angeles Timezone
//output : myDate = "2019-05-11 05:52:40"

但输出即将到来myDate = timezone.tz(myDate, "America/Los_Angeles"); //added tz myDate = timezone(myDate).tz("utc").format("YYYY-MM-DD HH:mm:ss"); “与输入"2019-05-11 12:52:40不同。

我在这里做错什么了吗?

1 个答案:

答案 0 :(得分:1)

当您从字符串中创建一个时刻并且未指定时区时,时刻会假定它是当地时间。根据{{​​3}}:

  

moment(...)是本地模式。假设输入不明确(无偏移)   是当地时间。明确的输入(带偏移)调整为本地   时间。

因此,“ 2019-05-11 18:22:40”将被即时读取为本地时区中的日期。

您可以使用moment.utc("2019-05-11 18:22:40")假定它是UTC。

这意味着要像这样更改代码:

var myDate = "2019-05-11 18:22:40" //stored in DB utc format
myDate = timezone.utc(myDate).tz("America/Los_Angeles").format("YYYY-MM-DD HH:mm:ss");

但是理想情况下,您的数据库应该使用the moment docs来存储/返回日期,以显示时间,以便时区清晰,即“ 2019-05-11T18:22:40Z”。 “ Z”表示UTC,因此如果您调用moment("2019-05-11T18:22:40Z"),此刻将自动将其解析为UTC。