如何创建具有特定时间和特定时区(默认本地时区除外)的 moment JS 对象?
How to create a momentJS object with a specfic time and a specific timezone(other than the default local time zone)?
我将从前端收到一个字符串(带有时间和日期)。字符串格式是这个“2021-08-16T23:15:00.000Z”。我打算用输入字符串声明一个时刻对象,以及一个特定的时区(本地时区除外)。
import moment from "moment";
import "moment-timezone";
// The input string I receive from the frontend.
let strTime = "2021-08-16T23:15:00.000Z";
console.log(strTime); //2021-08-16T23:15:00.000Z
let time = moment.tz(strTime, "YYYY-MM-DDTHH:mm:ss.SSSZ","America/Boise");
console.log(time); // Moment<2021-08-16T17:15:00-06:00>, undesired value
let UTCtime = moment.utc(time);
console.log(UTCtime);
据我从 this 问题中了解到,console.log(time)
应该输出一个时间对象 23:15:00,但时区为“America/Boise”。
我打算 time
有相同的时间,即“23:15:00.000”,时区为“America/Boise”。
因此,当我稍后将该时间转换为 UTC 时,我需要获得正确的值 w.r.t 时区“America/Boise”,而不是我的本地时区。我该怎么做。
我想出了解决办法。
const momenttz = require("moment-timezone");
const moment = require("moment");
// The input string I receive from the frontend.
let strTime = "2021-08-16T23:15:00.000Z";
console.log(strTime); //2021-08-16T23:15:00.000Z
let time = moment.utc(strTime);
time.tz("America/Boise", true);
console.log(time.tz());
console.log(time); // Moment<2021-08-16T23:15:00-06:00>, desired value
let UTCtime = moment.utc(time);
console.log(UTCtime); // Moment<2021-08-17T05:15:00Z>
在上面的代码中,在 console.log(time)
,time
的值为“23:15:00.000”,所需时区为“America/Boise”。这使您可以在稍后将其转换为 UTC 时获得正确的值。
这可以通过将可选的第二个参数传递给 moment-timezone
的 .tz
变元作为 true
来实现,它仅更改时区(及其相应的偏移量),并且不影响时间值。
time.tz(timezone, true);
上面的答案代码中给出了使用它的示例。
您可以在 Moment 时区文档
中阅读更多相关信息 here
我将从前端收到一个字符串(带有时间和日期)。字符串格式是这个“2021-08-16T23:15:00.000Z”。我打算用输入字符串声明一个时刻对象,以及一个特定的时区(本地时区除外)。
import moment from "moment";
import "moment-timezone";
// The input string I receive from the frontend.
let strTime = "2021-08-16T23:15:00.000Z";
console.log(strTime); //2021-08-16T23:15:00.000Z
let time = moment.tz(strTime, "YYYY-MM-DDTHH:mm:ss.SSSZ","America/Boise");
console.log(time); // Moment<2021-08-16T17:15:00-06:00>, undesired value
let UTCtime = moment.utc(time);
console.log(UTCtime);
据我从 this 问题中了解到,console.log(time)
应该输出一个时间对象 23:15:00,但时区为“America/Boise”。
我打算 time
有相同的时间,即“23:15:00.000”,时区为“America/Boise”。
因此,当我稍后将该时间转换为 UTC 时,我需要获得正确的值 w.r.t 时区“America/Boise”,而不是我的本地时区。我该怎么做。
我想出了解决办法。
const momenttz = require("moment-timezone");
const moment = require("moment");
// The input string I receive from the frontend.
let strTime = "2021-08-16T23:15:00.000Z";
console.log(strTime); //2021-08-16T23:15:00.000Z
let time = moment.utc(strTime);
time.tz("America/Boise", true);
console.log(time.tz());
console.log(time); // Moment<2021-08-16T23:15:00-06:00>, desired value
let UTCtime = moment.utc(time);
console.log(UTCtime); // Moment<2021-08-17T05:15:00Z>
在上面的代码中,在 console.log(time)
,time
的值为“23:15:00.000”,所需时区为“America/Boise”。这使您可以在稍后将其转换为 UTC 时获得正确的值。
这可以通过将可选的第二个参数传递给 moment-timezone
的 .tz
变元作为 true
来实现,它仅更改时区(及其相应的偏移量),并且不影响时间值。
time.tz(timezone, true);
上面的答案代码中给出了使用它的示例。
您可以在 Moment 时区文档
中阅读更多相关信息 here