如何将moment-timezone的moment.tz用法转换为Luxon实现?
对应的Luxon实现代码
先拆解原Moment-Timezone代码的逻辑:
创建本地时区下当前日期的14:00:00.000时间对象,再将其转换为Europe/Spain时区的时间。
对应的Luxon实现如下:
// 导入Luxon的DateTime类(模块化/Node.js环境) const { DateTime } = require('luxon'); // 或 import { DateTime } from 'luxon'; // 对应原代码中moment().hour(14).minute(0).second(0).milliseconds(0) const luxonTask = DateTime.local().set({ hour: 14, minute: 0, second: 0, millisecond: 0 }); // 对应原代码中moment.tz(momentTask, "Europe/Spain") const luxonTaskInSpain = luxonTask.setZone("Europe/Spain"); // 打印输出 console.log(`This momentTask 1`, luxonTaskInSpain.toString());
关键对应点说明
moment()→DateTime.local():获取当前本地时区的时间- 链式调用
.hour().minute()等 →.set({ ... }):Luxon通过对象参数一次性设置多时间字段,语法更简洁 moment.tz(..., 时区)→.setZone(时区):将时间对象转换到目标时区
如果需要匹配原Moment的输出格式,可通过toFormat()自定义:
console.log(`This momentTask 1`, luxonTaskInSpain.toFormat("YYYY-MM-DD HH:mm:ss ZZ"));
内容的提问来源于stack exchange,提问作者GCT
相关产品推荐
相关产品推荐

