У меня есть функция, которая вычисляет, к какой дате (ГГГГ-ММ-ДД) данная временная метка разрешает местный часовой пояс пользователя. Например: 2019-12-31T23:30:00.000Z
разрешается в 2020-01-01
в UTC+1
, но разрешается в 2019-12-31
в UTC-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");
});
});
Как я могу издеваться над местным часовым поясом?