我正在使用 momentjs#timezone
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"
不同。
我在这里做错了吗?
从字符串创建矩时,未指定时区时,MOMM假设是本地时间。根据文档的那一刻:
力矩(...(是本地模式。假定输入模棱两可(无偏移( 成为当地时间。明确的输入(带偏移(已调整为本地 时间。
so" 2019-05-11 18:22:40"将以当地时区的日期阅读。
您可以使用moment.utc("2019-05-11 18:22:40")
。
这意味着这样更改您的代码:
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");
但理想情况下,您的数据库应使用ISO-8601标准来存储/返回日期,以使时区明确,即" 2019-05-11T18:22:40Z"。" z"表示UTC,因此如果您调用moment("2019-05-11T18:22:40Z")
。