|
|
|
@ -24,6 +24,8 @@ function time2Date(time, isOffset = false) { |
|
|
|
|
|
|
|
} else { // 传入一个时间戳
|
|
|
|
// 检测时间戳的长度,确保为ms
|
|
|
|
const dates = new Date(time); |
|
|
|
const isInEDT = dateIsInEDT(dates); |
|
|
|
if (time.toString().length <= 10) { |
|
|
|
time = Number(time) * 1000; |
|
|
|
} |
|
|
|
@ -32,10 +34,8 @@ function time2Date(time, isOffset = false) { |
|
|
|
if (isOffset) { |
|
|
|
timeN = getTimeZoneOffset(time); |
|
|
|
}else{ |
|
|
|
// 这也是对时差进行转换,但是不想在每个处理时间格式的组件中修改isOffset为true
|
|
|
|
timeN = time-(-28800000)+(new Date(new Date().getTime()).getTimezoneOffset()* 60 * 1000) - 43200000; |
|
|
|
// timeN = time-(-28800000)+(new Date(new Date().getTime()).getTimezoneOffset()* 60 * 1000) - 46800000;
|
|
|
|
// console.log(timeN);
|
|
|
|
// 这也是对时差进行转换,不需要在每个处理时间格式的组件中修改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); |
|
|
|
/** |
|
|
|
* 北京时间时间戳和同一时间时间戳相差“-28800000”ms,本地时间和同一时间相差 |
|
|
|
* time-28800000+(new Date(new Date().getTime()).getTimezoneOffset()* 60 * 1000) |
|
|
|
@ -48,6 +48,16 @@ function time2Date(time, isOffset = false) { |
|
|
|
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(13 - start.getUTCDay()); |
|
|
|
end.setUTCDate(3 - end.getUTCDay()); |
|
|
|
|
|
|
|
return date >= start && date < end; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 将指定日期格式化输出, |
|
|
|
|