我有一个util方法,它接受日期输入并将其转换为dayjs实例,而时区转换是可选的。
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对象获取时区信息的方法,我可以检查时区是否相同。就像这样。
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);
}
发布于 2022-07-26 16:17:30
你可以尝试这样的方法:
const hasTimeZone = myDayJs["$x"]["$timezone"] !== undefined;
代码myDayJs["$x"]["$timezone"]
是我找到的唯一可以成功地检查DayJs对象上现有时区的方法。如果时区名称存在,它将以字符串的形式返回,如果不存在,则返回未定义的时区名称。
您也可以使用myDayJs.$x.$timezone
,这将给出相同的结果,但它可能会为您提供关于未解决变量的UI警告。
https://stackoverflow.com/questions/71000147
复制相似问题