MomentJS 保持默认日期为 GMT
MomentJS keeps defaulting date to GMT
我有
moment(line.dateRange[0], 'DD-MM-YY HH:mm').toDate()
设置,其中输入为字符串:15-10-2021 09:00
Moment 一直在输出:2020-10-15T07:00:00.000Z
,即使我的 nodeJS 服务器的 process.env.TZ
是 Europe/Amsterdam
。
for (const line of orderLines) {
let orderLine = {
bookingID: bookingDB.id,
bookingStart: moment(line.dateRange[0], 'DD-MM-YY HH:mm').format(),
bookingEnd: moment(line.dateRange[1], 'DD-MM-YY HH:mm').format(),
productID: line.productID,
type: line.type
}
console.log(orderLine)
lines.push(orderLine);
}
const orderLinesDB = await BookingLine.bulkCreate(lines);
console.log(orderLinesDB)
res.status(200).send(orderLinesDB);
我怀疑您正在看到输出 2020-10-15T07:00:00.000Z
因为您正在做:
console.log(moment('15-10-2021 09:00', 'DD-MM-YY HH:mm').toDate())
您在输出中看到的是 UTC 时间,比 Europe/Amsterdam 晚 2 小时,因为 Node.js 在记录日期时调用 toISOString()。
尝试调用 moment.format() to see local time, or use .toDate().toLocaleString() or .toDate().toString().
例如:
const input = '15-10-2021 09:00';
console.log('UTC time:', moment(input, 'DD-MM-YY HH:mm').toDate())
console.log('Local time:', moment(input, 'DD-MM-YY HH:mm').format())
console.log('Local time (II):', moment(input, 'DD-MM-YY HH:mm').toDate().toLocaleString())
console.log('Local time (III):', moment(input, 'DD-MM-YY HH:mm').toDate().toString())
应该输出
UTC time: 2020-10-15T07:00:00.000Z
Local time: 2020-10-15T09:00:00+02:00
Local time (II): 15/10/2020, 09:00:00
Local time (III): Thu Oct 15 2020 09:00:00 GMT+0200 (Central European Summer Time)
这是我们所期望的。
我有
moment(line.dateRange[0], 'DD-MM-YY HH:mm').toDate()
设置,其中输入为字符串:15-10-2021 09:00
Moment 一直在输出:2020-10-15T07:00:00.000Z
,即使我的 nodeJS 服务器的 process.env.TZ
是 Europe/Amsterdam
。
for (const line of orderLines) {
let orderLine = {
bookingID: bookingDB.id,
bookingStart: moment(line.dateRange[0], 'DD-MM-YY HH:mm').format(),
bookingEnd: moment(line.dateRange[1], 'DD-MM-YY HH:mm').format(),
productID: line.productID,
type: line.type
}
console.log(orderLine)
lines.push(orderLine);
}
const orderLinesDB = await BookingLine.bulkCreate(lines);
console.log(orderLinesDB)
res.status(200).send(orderLinesDB);
我怀疑您正在看到输出 2020-10-15T07:00:00.000Z
因为您正在做:
console.log(moment('15-10-2021 09:00', 'DD-MM-YY HH:mm').toDate())
您在输出中看到的是 UTC 时间,比 Europe/Amsterdam 晚 2 小时,因为 Node.js 在记录日期时调用 toISOString()。
尝试调用 moment.format() to see local time, or use .toDate().toLocaleString() or .toDate().toString().
例如:
const input = '15-10-2021 09:00';
console.log('UTC time:', moment(input, 'DD-MM-YY HH:mm').toDate())
console.log('Local time:', moment(input, 'DD-MM-YY HH:mm').format())
console.log('Local time (II):', moment(input, 'DD-MM-YY HH:mm').toDate().toLocaleString())
console.log('Local time (III):', moment(input, 'DD-MM-YY HH:mm').toDate().toString())
应该输出
UTC time: 2020-10-15T07:00:00.000Z Local time: 2020-10-15T09:00:00+02:00 Local time (II): 15/10/2020, 09:00:00 Local time (III): Thu Oct 15 2020 09:00:00 GMT+0200 (Central European Summer Time)
这是我们所期望的。