我有一个函数,它将2021-06-07T07:28:55.69725+00:00格式的日期转换为07:28格式的小时和分钟字符串。
export function getTime(dateTime: string) {
return dayjs(dateTime).format("HH:mm");
}目前我定位在UTC+5中,所以这个函数对参数2021-06-07T07:28:55.69725+00:00的回答是12:28。我想测试这个函数的工作,但是我需要模拟时区,这样在不同时区的机器上测试就可以了。我尝试了下一段代码,但它仍然返回12:28。
import dayjs from "dayjs";
import timezone from 'dayjs/plugin/timezone';
dayjs.extend(timezone)
describe('Function getTime', () => {
beforeEach(() => {
dayjs.tz.setDefault('Europe/Moscow');
})
afterEach(() => {
dayjs.tz.setDefault();
})
it('should return time in format hh:mm', () => {
const dateTime = '2021-06-07T07:28:55.69725+00:00';
expect(getTime(dateTime)).toEqual('10:28');
})
})发布于 2022-08-22 13:17:20
问题是,dayjs.tz.setDefault(‘欧洲/莫斯科’)只影响dayjs.tz()。这意味着,dayjs()仍将显示您的本地时间。
你应该改变你的职能:
export function getTime(dateTime: string) {
return dayjs.tz(dateTime).format("HH:mm");
}现在它应该像你期望的那样起作用了。
https://stackoverflow.com/questions/67898106
复制相似问题