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

Javascript 无法将UTC转换为PST,反之亦然,javascript,timezone,momentjs,Javascript,Timezone,Momentjs,我使用lib从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 = "

我使用lib从
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"
现在,想再次转换为UTC吗

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”,这与输入不同


我在这里做错了什么吗?

当您从字符串创建一个时刻,但没有指定时区时,该时刻假定它是本地时间。根据:

力矩(…)是本地模式。假设输入不明确(无偏移) 当地时间。无歧义输入(带偏移)调整为本地 时间

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

您可以使用
矩.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");

但理想情况下,您的数据库应该使用for time display存储/返回日期,以便时区清晰,即“2019-05-11T18:22:40Z”。“Z”表示UTC,因此,如果您调用
矩(“2019-05-11T18:22:40Z”)

我更新了答案,使简单的解决方案更加清晰,矩将自动将其解析为UTC。更理想的解决方案是更改后端返回的内容您是否尝试过代码更改
myDate=timezone.utc(myDate).tz(“America/Los_Angeles”).format(“YYYY-MM-DD HH:MM:ss”)