gpt4 book ai didi

javascript - 如何模拟时区?

转载 作者:行者123 更新时间:2023-12-04 01:35:16 26 4
gpt4 key购买 nike

我有一个函数可以计算给定时间戳在用户本地时区上解析为哪个日期(YYYY-MM-DD)。例如:2019-12-31T23:30:00.000Z解析为 2020-01-01UTC+1 , 但解析为 2019-12-31UTC-1 .

这是我的实现:

function calcLocalYyyyMmDd(dateStr) {
const date = new Date(dateStr);
const year = String(date.getFullYear()).padStart(4, "0");
const month = String(date.getMonth() + 1).padStart(2, "0");
const day = String(date.getDate()).padStart(2, "0");
return `${year}-${month}-${day}`;
}

这可以按预期工作,但是,我想在单元测试中验证此行为(使用玩笑,不确定是否相关)。
describe("calcLocalYyyyMmDd", () => {
test("calculates correct date on UTC+1", () => {
// TODO mock local timezone
const result = calcLocalYyyyMmDd("2019-12-31T23:30:00.000Z");
expect(result).toBe("2020-01-01");
});

test("calculates correct date on UTC-1", () => {
// TODO mock local timezone
const result = calcLocalYyyyMmDd("2020-01-01T00:30:00.000Z");
expect(result).toBe("2019-12-31");
});
});

如何模拟本地时区?

最佳答案

不幸的是,有 no simple way to do this .

但是,如果您在 Linux 系统上,您可以设置 TZ launching a browser 之前的环境变量或 starting Node.js ,但是一旦进程运行,时区就无法更改。 Date对象仅使用系统的本地时区。

请注意,由于时区实现的复杂性,这种方法在 Windows 上并不可靠。

关于javascript - 如何模拟时区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59784825/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com