首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从dayjs对象的实例中获取时区?

从dayjs对象的实例中获取时区?
EN

Stack Overflow用户
提问于 2022-02-05 16:56:00
回答 1查看 744关注 0票数 1

我有一个util方法,它接受日期输入并将其转换为dayjs实例,而时区转换是可选的。

代码语言:javascript
运行
复制
import dayjs from 'dayjs';
import timezone from 'dayjs/plugin/timezone';
import utc from 'dayjs/plugin/utc';

const convertDateToLocalFormat= (date = dayjs(), isTimezoneConvesrionRequired = true)=>{
  
  dayjs.extend(utc);
  dayjs.extend(timezone);
  if(isTimezoneConvesrionRequired){
   const tZone = dayjs.tz().guess();
   return dayjs(date).tz(tZone);
  }
  return dayjs(date);

}

**问题:**现在,如果我将daysjs对象的一个实例传递给这个函数(在第一次迭代中)已经对其应用了时区,那么我将得到一个应用了两次时区的日期。例如,我是太平洋时区(浏览器时区,比如说2022年2月5日上午9点)。我的目标时区是印度(我从我的数据库中得到这个时区)。所以不是晚上10点30分,而是2022年2月5日,我是12点,2月6日,2022年。

**我的方法:**如果有从dayjs对象获取时区信息的方法,我可以检查时区是否相同。就像这样。

代码语言:javascript
运行
复制
const instanceTimeZone = date.getTimeZoneInfo() // assuming date is already an instance 
                                               // of dayjs and getTimeZoneInfo() is what 
                                               // I am looking for, some util kind of 
                                               // method
if(isTimezoneConvesrionRequired && instanceTimeZone !== dayjs.tz().guess() ){
   const tZone = dayjs.tz().guess();
   return dayjs(date).tz(tZone);
  }
EN

回答 1

Stack Overflow用户

发布于 2022-07-26 16:17:30

你可以尝试这样的方法:

代码语言:javascript
运行
复制
const hasTimeZone = myDayJs["$x"]["$timezone"] !== undefined;

代码myDayJs["$x"]["$timezone"]是我找到的唯一可以成功地检查DayJs对象上现有时区的方法。如果时区名称存在,它将以字符串的形式返回,如果不存在,则返回未定义的时区名称。

您也可以使用myDayJs.$x.$timezone,这将给出相同的结果,但它可能会为您提供关于未解决变量的UI警告。

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

https://stackoverflow.com/questions/71000147

复制
相关文章

相似问题

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