diff --git a/static/chart_main/sevencoin.js b/static/chart_main/sevencoin.js index 96ecd0d..412829b 100644 --- a/static/chart_main/sevencoin.js +++ b/static/chart_main/sevencoin.js @@ -254,7 +254,8 @@ $(function () { } timestampToTime(timestamp) { const dates = new Date(timestamp); - const date = this.adjustToEasternTime(dates); + const resolutionTime = this.getResolutionTime() + const date = resolutionTime === 1 ? dates : this.adjustToEasternTime(dates); const yyyy = `${date.getFullYear()}`; const yy = `${date.getFullYear()}`.substr(2); @@ -273,20 +274,34 @@ $(function () { return dateStr } adjustToEasternTime(date) { - // 将给定日期转换为时间戳 - const timestamp = date.getTime(); - - // 获取美国东部时区偏移值(以分钟为单位) - const easternOffset = -240; // 美国东部时区偏移值为 -240 分钟 - - // 调整时间为美国东部时间 - const adjustedTime = timestamp - (date.getTimezoneOffset() + easternOffset) * 60 * 1000; - - // 创建新的日期对象,并使用调整后的时间戳 - const adjustedDate = new Date(adjustedTime); + // 将给定日期转换为时间戳 + const timestamp = date.getTime(); + + // 获取美国东部时区偏移值(以分钟为单位) + // const easternOffset = -240; // 美国东部时区偏移值为 -240 分钟 + // 获取东部时间的偏移值(分钟) + let easternOffset = 1260; // 标准时间(EST) + if (this.dateIsInEDT(date)) { + easternOffset = 1200; // 夏令时(EDT) + } + // 调整时间为美国东部时间 + const adjustedTime = timestamp - (date.getTimezoneOffset() + easternOffset) * 60 * 1000; + // 创建新的日期对象,并使用调整后的时间戳 + const adjustedDate = new Date(adjustedTime); + + // 返回调整后的日期对象 + return adjustedDate; + } + // 判断日期是否在夏令时(简化的逻辑,实际应用中需要考虑更多的边界情况) + dateIsInEDT(date) { + const year = date.getUTCFullYear(); + const start = new Date(Date.UTC(year, 2, 13, 7)); // March, 2nd Sunday + const end = new Date(Date.UTC(year, 10, 6, 6)); // November, 1st Sunday + + start.setUTCDate(14 - start.getUTCDay()); + end.setUTCDate(7 - end.getUTCDay()); - // 返回调整后的日期对象 - return adjustedDate; + return date >= start && date < end; } getResolutionTime() { const resolution = this.TView.chart().resolution();