首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何模拟dayjs时区

如何模拟dayjs时区
EN

Stack Overflow用户
提问于 2021-06-09 05:31:13
回答 1查看 943关注 0票数 3

我有一个函数,它将2021-06-07T07:28:55.69725+00:00格式的日期转换为07:28格式的小时和分钟字符串。

代码语言:javascript
复制
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

代码语言:javascript
复制
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');
  })
})
EN

回答 1

Stack Overflow用户

发布于 2022-08-22 13:17:20

问题是,dayjs.tz.setDefault(‘欧洲/莫斯科’)只影响dayjs.tz()。这意味着,dayjs()仍将显示您的本地时间。

你应该改变你的职能:

代码语言:javascript
复制
export function getTime(dateTime: string) {   
    return dayjs.tz(dateTime).format("HH:mm"); 
}

现在它应该像你期望的那样起作用了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67898106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档