diff --git a/static/chart_main/sevencoin.js b/static/chart_main/sevencoin.js index 2b8ca78..d4ff158 100644 --- a/static/chart_main/sevencoin.js +++ b/static/chart_main/sevencoin.js @@ -255,7 +255,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); @@ -278,19 +279,33 @@ $(function () { adjustToEasternTime(date) { // 将给定日期转换为时间戳 const timestamp = date.getTime(); - + // 获取美国东部时区偏移值(以分钟为单位) - const easternOffset = -240; // 美国东部时区偏移值为 -240 分钟 - + // 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 date >= start && date < end; + } getResolutionTime() { const resolution = this.TView.chart().resolution();