diff --git a/static/chart_main/sevencoin.js b/static/chart_main/sevencoin.js index 6b354ec..e32c5a3 100644 --- a/static/chart_main/sevencoin.js +++ b/static/chart_main/sevencoin.js @@ -253,7 +253,10 @@ $(function () { tvQuoter.find('[data-name="zhangdiee"]').css('color',zhangdiee>0?'#53b987':'#eb4d5c'); } timestampToTime(timestamp) { - const date = new Date(timestamp); + const dates = new Date(timestamp); + const resolutionTime = this.getResolutionTime() + const date = resolutionTime === 1 ? dates : this.adjustToEasternTime(dates); + const yyyy = `${date.getFullYear()}`; const yy = `${date.getFullYear()}`.substr(2); const MM = `0${date.getMonth() + 1}`.slice(-2); @@ -271,6 +274,38 @@ $(function () { } return dateStr } + + adjustToEasternTime(date) { + // 将给定日期转换为时间戳 + 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 date >= start && date < end; + } + getResolutionTime() { const resolution = this.TView.chart().resolution(); switch (resolution) {