【发布时间】:2016-10-03 18:32:03
【问题描述】:
在我的 Node.js 应用程序中,用户提交日期、时间和时区(单独的表单字段)。使用 Moment Timezone,我正在尝试保存调整为无偏移的日期(与时区无关)。
下面的代码有效,但是有没有更简单/更简洁的方法来实现相同的结果?必须将偏移量乘以 -1 似乎很骇人:
const userDate = new Date(req.body.date + ' ' + req.body.time);
const userTz = req.body.tz;
const offset = moment.tz(userTz).utcOffset();
const utc = moment(userDate).utcOffset(-1*offset).format('YYYY-MM-DD[T]HH:mm:ss');
示例输入:
Date: 09/06/2016 (via Bootstrap date picker)
Time: 07:41:00 (via Bootstrap time picker)
Timezone: America/New_York (UTC/GMT -4 hours)
返回(正确):
2016-09-06T11:41:00Z
提前致谢!
【问题讨论】:
-
moment.js,作为您可以使用的 utc 变体。例如。 moment.utc() -> momentjs.com/docs/#/parsing/utc
-
如何在没有原始时区知识的情况下使用 .utc() 正确调整偏移量?
-
未测试。你可以链接类似 moment(userDate).tz(userTz).utc().format('YYYY-MM-DD HH:mm:ss')
标签: javascript node.js datetime momentjs