Browse Source

修改时间转换函数

master
liaoxinyu 4 months ago
parent
commit
142f6781e3
  1. 17
      utils/class/date.js

17
utils/class/date.js

@ -25,6 +25,8 @@ function time2Date(time, isOffset = false) {
} else { // 传入一个时间戳 } else { // 传入一个时间戳
// 检测时间戳的长度,确保为ms // 检测时间戳的长度,确保为ms
const dates = new Date(time);
const isInEDT = dateIsInEDT(dates);
if (time.toString().length <= 10) { if (time.toString().length <= 10) {
time = Number(time) * 1000; time = Number(time) * 1000;
} }
@ -34,7 +36,9 @@ function time2Date(time, isOffset = false) {
timeN = getTimeZoneOffset(time); timeN = getTimeZoneOffset(time);
}else{ }else{
// 这也是对时差进行转换,不需要在每个处理时间格式的组件中修改isOffset为true // 这也是对时差进行转换,不需要在每个处理时间格式的组件中修改isOffset为true
timeN = time-(-28800000)+(new Date(new Date().getTime()).getTimezoneOffset()* 60 * 1000); // timeN = time-(-28800000)+(new Date(new Date().getTime()).getTimezoneOffset()* 60 * 1000);
// 这也是对时差进行转换,不需要在每个处理时间格式的组件中修改isOffset为true
timeN = isInEDT ? time - (-28800000)+(new Date(new Date().getTime()).getTimezoneOffset()* 60 * 1000) - 43200000 : time - (-28800000)+(new Date(new Date().getTime()).getTimezoneOffset()* 60 * 1000) - 46800000;
} }
// 转化成日期时间对象 // 转化成日期时间对象
@ -44,6 +48,17 @@ function time2Date(time, isOffset = false) {
return date; return date;
} }
// 判断日期是否在夏令时(简化的逻辑,实际应用中需要考虑更多的边界情况)
function dateIsInEDT(date) {
const year = date.getUTCFullYear();
const start = new Date(Date.UTC(year, 2, 8, 18)); // March, 2nd Sunday
const end = new Date(Date.UTC(year, 10, 3, 18)); // November, 1st Sunday
start.setUTCDate(14 - start.getUTCDay());
end.setUTCDate(7 - end.getUTCDay());
return date >= start && date < end;
}
/** /**
* 将指定日期格式化输出 * 将指定日期格式化输出

Loading…
Cancel
Save