Browse Source

修改k线为自动切换夏令时和冬令时

master
liaoxinyu 9 months ago
parent
commit
07834940c0
  1. 4
      pages/exchange/open-position.vue
  2. 36
      static/chart_main/sevencoin.js
  3. BIN
      static/favicon.ico
  4. 36
      utils/class/date.js

4
pages/exchange/open-position.vue

@ -741,7 +741,7 @@
</view> </view>
</view> </view>
<view class="p-x-md p-t-0"> <view class="p-x-md p-t-0">
<v-input class="p-sm rounded border m-t-sm" :placeholder="$t('contract.i3')" type="number" <v-input class="p-sm rounded border m-t-sm" :placeholder="$t('contract.i3')"
v-model="strategyForm.tp_trigger_price"> v-model="strategyForm.tp_trigger_price">
<template #left> <template #left>
<span class="color-default">{{ $t("contract.i4") }}</span> <span class="color-default">{{ $t("contract.i4") }}</span>
@ -757,7 +757,7 @@
}} }}
USDT USDT
</view> --> </view> -->
<v-input class="p-sm rounded border m-t-sm" :placeholder="$t('contract.i3')" type="number" <v-input class="p-sm rounded border m-t-sm" :placeholder="$t('contract.i3')"
v-model="strategyForm.sl_trigger_price"> v-model="strategyForm.sl_trigger_price">
<template #left> <template #left>
<span class="color-default">{{ $t("contract.i7") }}</span> <span class="color-default">{{ $t("contract.i7") }}</span>

36
static/chart_main/sevencoin.js

@ -253,12 +253,12 @@ $(function () {
tvQuoter.find('[data-name="zhangdiee"]').css('color',zhangdiee>0?'#53b987':'#eb4d5c'); tvQuoter.find('[data-name="zhangdiee"]').css('color',zhangdiee>0?'#53b987':'#eb4d5c');
} }
timestampToTime(timestamp) { timestampToTime(timestamp) {
const date = new Date(timestamp); const date = this.adjustToEasternTime(timestamp);
const yyyy = `${date.getFullYear()}`; const yyyy = `${date.getFullYear()}`;
const yy = `${date.getFullYear()}`.substr(2); const yy = `${date.getFullYear()}`.substr(2);
const MM = `0${date.getMonth() + 1}`.slice(-2); const MM = `0${date.getMonth() + 1}`.slice(-2);
const dd = `0${date.getDate()}`.slice(-2); const dd = `0${date.getDate()}`.slice(-2);
const HH = `0${date.getHours()-13}`.slice(-2); const HH = `0${date.getHours()}`.slice(-2);
const mm = `0${date.getMinutes()}`.slice(-2); const mm = `0${date.getMinutes()}`.slice(-2);
@ -271,6 +271,38 @@ $(function () {
} }
return dateStr return dateStr
} }
adjustToEasternTime(date) {
let timestamp;
// 判断日期是否在夏令时
const dates = new Date(date);
const isInEDT = this.dateIsInEDT(dates);
// 根据是否在夏令时来调整时间
if (isInEDT) {
// 在夏令时期间
timestamp = date - (-28800000)+(new Date(new Date().getTime()).getTimezoneOffset()* 60 * 1000) - 43200000; // 使用43200000毫秒 = 12小时
} else {
// 在冬令时期间
timestamp = date - (-28800000)+(new Date(new Date().getTime()).getTimezoneOffset()* 60 * 1000) - 46800000; // 使用46800000毫秒 = 13小时
}
// 创建新的日期对象,并使用调整后的时间戳
const adjustedDate = new Date(timestamp);
// 返回调整后的日期对象
return adjustedDate;
}
// 判断日期是否在夏令时(简化的逻辑,实际应用中需要考虑更多的边界情况)
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;
}
getResolutionTime() { getResolutionTime() {
const resolution = this.TView.chart().resolution(); const resolution = this.TView.chart().resolution();
switch (resolution) { switch (resolution) {

BIN
static/favicon.ico

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

36
utils/class/date.js

@ -7,8 +7,8 @@
function getTimeZoneOffset(time) { function getTimeZoneOffset(time) {
const date = new Date(time); const date = new Date(time);
// 获取时区偏移值,返回分钟数 // 获取时区偏移值,返回分钟数
// let offset = date.getTimezoneOffset(); let offset = date.getTimezoneOffset();
let offset = 0; // let offset = 0;
return time + offset * 60 * 1000; return time + offset * 60 * 1000;
} }
@ -28,13 +28,17 @@ function time2Date(time, isOffset = false) {
if (time.toString().length <= 10) { if (time.toString().length <= 10) {
time = Number(time) * 1000; time = Number(time) * 1000;
} }
let timeN;
// 是否对时差进行转化 // 是否对时差进行转化
if (isOffset) { if (isOffset) {
// time = getTimeZoneOffset(time); timeN = getTimeZoneOffset(time);
} }else{
// 这也是对时差进行转换,不需要在每个处理时间格式的组件中修改isOffset为true
timeN = time-(-28800000)+(new Date(new Date().getTime()).getTimezoneOffset()* 60 * 1000);
}
// 转化成日期时间对象 // 转化成日期时间对象
date = new Date(time); date = new Date(timeN);
} }
return date; return date;
@ -51,7 +55,8 @@ function parseTime(time, isOffset = false, cformat = null) {
// 设置默认格式 // 设置默认格式
let format = cformat || '{y}-{m}-{d} {h}:{i}:{s}'; let format = cformat || '{y}-{m}-{d} {h}:{i}:{s}';
time = time + 8 * 3600; // let format = cformat || '{m}/{d}/{y} {h}:{i}:{s}';
const date = time2Date(time, isOffset); const date = time2Date(time, isOffset);
// 将日期时间值存入对象中 // 将日期时间值存入对象中
@ -64,21 +69,18 @@ function parseTime(time, isOffset = false, cformat = null) {
s: date.getSeconds(), s: date.getSeconds(),
a: date.getDay() a: date.getDay()
}; };
console.log(date);
// 星期值需要转化为中文 // 星期值需要转化为中文
dataObj.a = '星期' + ['日', '一', '二', '三', '四', '五', '六'][dataObj.a]; dataObj.a = '星期' + ['日', '一', '二', '三', '四', '五', '六'][dataObj.a];
// 匹配{}中的y|m|d...部分,分别替换不同的值 // 匹配{}中的y|m|d...部分,分别替换不同的值
// const result = format.replace(/{(y|m|d|h|i|s|a)+}/g, (segment, key) => { const result = format.replace(/{(y|m|d|h|i|s|a)+}/g, (segment, key) => {
// // 由索引提取值 // 由索引提取值
// let value = dataObj[key]; let value = dataObj[key];
// // 给值添加前导0 // 给值添加前导0
// if (segment.length > 0 && value < 10) value = '0' + value; if (segment.length > 0 && value < 10) value = '0' + value;
// return value || 0; return value || 0;
// }); });
// time = time + 8 * 3600 * 1000; // 增加8小时
const result = date.toJSON().substr(0, 19).replace('T', ' ');
// console.log(result);
return result; return result;
} }

Loading…
Cancel
Save