有没有方法可以提高NodeJS中时区转换的执行时间?

vatpfxk5  于 2023-05-06  发布在  Node.js
关注(0)|答案(1)|浏览(121)

我目前正在编写一段代码,需要将一个大的UTC日期列表格式化为ISO格式的特定时区。
对于基准测试,我只使用Date#toISOString()对它们进行格式化,基准测试的平均执行时间为93毫秒
下面是我测试过的其他几个(使用时区操作)

卢克森

DateTime.now().setZone(ZONE).toISO())

date-fns-tz

formatInTimeZone(new Date(), ZONE, "yyyy-MM-dd'T'HH:mm:ss.SSSXXX");

day.js

dayjs.extend(utc);
dayjs.extend(timezone);

dayjs().tz(ZONE).format()

平均执行时间:
| 图书馆|平均执行时间(ms)|
| --------------|--------------|
| Date.toIsoString()|九十三|
| 勒克松|一三六七|
| date-fns-tz|一六六二|
| day.js |二一三七|
由此,我们可以看到时区操作对性能的影响很大。有没有一个原因,这是固有的缓慢?在任何情况下,是否有更高性能的替代品?

thtygnil

thtygnil1#

我认为如果你尝试手动设置偏移量,然后使用toISOString。
例如,将日期转换为PST时区IsoString的函数。(PST为-8小时)

const get_PST_time = () => {
    const offset = currentDate.getTimezoneOffset() * 60000; // convert offset to milliseconds
    const pstTimestamp = currentDate.getTime() - offset - (3600000 * 8); // adjust for PST (-8 hours)
    const isoString = new Date(pstTimestamp).toISOString();
    return (isoString);
};

希望能帮上点忙

相关问题