修复仪表板折线图时间范围计算错误(UTC+8时区)

This commit is contained in:
shaw
2025-07-30 10:34:20 +08:00
parent 43dce7db4e
commit 496569d110
4 changed files with 55 additions and 46 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -18,7 +18,7 @@
<link rel="preconnect" href="https://cdnjs.cloudflare.com" crossorigin> <link rel="preconnect" href="https://cdnjs.cloudflare.com" crossorigin>
<link rel="dns-prefetch" href="https://cdn.jsdelivr.net"> <link rel="dns-prefetch" href="https://cdn.jsdelivr.net">
<link rel="dns-prefetch" href="https://cdnjs.cloudflare.com"> <link rel="dns-prefetch" href="https://cdnjs.cloudflare.com">
<script type="module" crossorigin src="/admin-next/assets/index-hS0iOrU-.js"></script> <script type="module" crossorigin src="/admin-next/assets/index-8QtnjTcX.js"></script>
<link rel="modulepreload" crossorigin href="/admin-next/assets/vue-vendor-CKToUHZx.js"> <link rel="modulepreload" crossorigin href="/admin-next/assets/vue-vendor-CKToUHZx.js">
<link rel="modulepreload" crossorigin href="/admin-next/assets/vendor-BDiMbLwQ.js"> <link rel="modulepreload" crossorigin href="/admin-next/assets/vendor-BDiMbLwQ.js">
<link rel="modulepreload" crossorigin href="/admin-next/assets/element-plus-B8Fs_0jW.js"> <link rel="modulepreload" crossorigin href="/admin-next/assets/element-plus-B8Fs_0jW.js">

View File

@@ -156,22 +156,33 @@ export const useDashboardStore = defineStore('dashboard', () => {
if (dateFilter.value.type === 'preset') { if (dateFilter.value.type === 'preset') {
switch (dateFilter.value.preset) { switch (dateFilter.value.preset) {
case 'last24h': case 'last24h':
// 近24小时从当前时间往前推24小时
endTime = new Date(now)
startTime = new Date(now.getTime() - 24 * 60 * 60 * 1000) startTime = new Date(now.getTime() - 24 * 60 * 60 * 1000)
endTime = now
break break
case 'yesterday': case 'yesterday':
// 昨天使用UTC时间避免时区双重转换
startTime = new Date(now) startTime = new Date(now)
startTime.setDate(now.getDate() - 1) startTime.setUTCDate(now.getUTCDate() - 1)
startTime.setHours(0, 0, 0, 0) startTime.setUTCHours(0, 0, 0, 0)
endTime = new Date(startTime) endTime = new Date(startTime)
endTime.setHours(23, 59, 59, 999) endTime.setUTCHours(23, 59, 59, 999)
// 由于后端会加8小时我们需要减去8小时
startTime = new Date(startTime.getTime() - 8 * 60 * 60 * 1000)
endTime = new Date(endTime.getTime() - 8 * 60 * 60 * 1000)
break break
case 'dayBefore': case 'dayBefore':
// 前天使用UTC时间
startTime = new Date(now) startTime = new Date(now)
startTime.setDate(now.getDate() - 2) startTime.setUTCDate(now.getUTCDate() - 2)
startTime.setHours(0, 0, 0, 0) startTime.setUTCHours(0, 0, 0, 0)
endTime = new Date(startTime) endTime = new Date(startTime)
endTime.setHours(23, 59, 59, 999) endTime.setUTCHours(23, 59, 59, 999)
// 由于后端会加8小时我们需要减去8小时
startTime = new Date(startTime.getTime() - 8 * 60 * 60 * 1000)
endTime = new Date(endTime.getTime() - 8 * 60 * 60 * 1000)
break break
default: default:
// 默认近24小时 // 默认近24小时
@@ -233,22 +244,33 @@ export const useDashboardStore = defineStore('dashboard', () => {
if (dateFilter.value.type === 'preset') { if (dateFilter.value.type === 'preset') {
switch (dateFilter.value.preset) { switch (dateFilter.value.preset) {
case 'last24h': case 'last24h':
// 近24小时从当前时间往前推24小时
endTime = new Date(now)
startTime = new Date(now.getTime() - 24 * 60 * 60 * 1000) startTime = new Date(now.getTime() - 24 * 60 * 60 * 1000)
endTime = now
break break
case 'yesterday': case 'yesterday':
// 昨天使用UTC时间避免时区双重转换
startTime = new Date(now) startTime = new Date(now)
startTime.setDate(now.getDate() - 1) startTime.setUTCDate(now.getUTCDate() - 1)
startTime.setHours(0, 0, 0, 0) startTime.setUTCHours(0, 0, 0, 0)
endTime = new Date(startTime) endTime = new Date(startTime)
endTime.setHours(23, 59, 59, 999) endTime.setUTCHours(23, 59, 59, 999)
// 由于后端会加8小时我们需要减去8小时
startTime = new Date(startTime.getTime() - 8 * 60 * 60 * 1000)
endTime = new Date(endTime.getTime() - 8 * 60 * 60 * 1000)
break break
case 'dayBefore': case 'dayBefore':
// 前天使用UTC时间
startTime = new Date(now) startTime = new Date(now)
startTime.setDate(now.getDate() - 2) startTime.setUTCDate(now.getUTCDate() - 2)
startTime.setHours(0, 0, 0, 0) startTime.setUTCHours(0, 0, 0, 0)
endTime = new Date(startTime) endTime = new Date(startTime)
endTime.setHours(23, 59, 59, 999) endTime.setUTCHours(23, 59, 59, 999)
// 由于后端会加8小时我们需要减去8小时
startTime = new Date(startTime.getTime() - 8 * 60 * 60 * 1000)
endTime = new Date(endTime.getTime() - 8 * 60 * 60 * 1000)
break break
default: default:
// 默认近24小时 // 默认近24小时
@@ -302,22 +324,33 @@ export const useDashboardStore = defineStore('dashboard', () => {
// 小时粒度的预设 // 小时粒度的预设
switch (preset) { switch (preset) {
case 'last24h': case 'last24h':
// 近24小时从当前时间往前推24小时
endDate = new Date(now)
startDate = new Date(now.getTime() - 24 * 60 * 60 * 1000) startDate = new Date(now.getTime() - 24 * 60 * 60 * 1000)
endDate = now
break break
case 'yesterday': case 'yesterday':
// 昨天使用UTC时间避免时区双重转换
startDate = new Date(now) startDate = new Date(now)
startDate.setDate(now.getDate() - 1) startDate.setUTCDate(now.getUTCDate() - 1)
startDate.setHours(0, 0, 0, 0) startDate.setUTCHours(0, 0, 0, 0)
endDate = new Date(startDate) endDate = new Date(startDate)
endDate.setHours(23, 59, 59, 999) endDate.setUTCHours(23, 59, 59, 999)
// 由于后端会加8小时我们需要减去8小时
startDate = new Date(startDate.getTime() - 8 * 60 * 60 * 1000)
endDate = new Date(endDate.getTime() - 8 * 60 * 60 * 1000)
break break
case 'dayBefore': case 'dayBefore':
// 前天使用UTC时间
startDate = new Date(now) startDate = new Date(now)
startDate.setDate(now.getDate() - 2) startDate.setUTCDate(now.getUTCDate() - 2)
startDate.setHours(0, 0, 0, 0) startDate.setUTCHours(0, 0, 0, 0)
endDate = new Date(startDate) endDate = new Date(startDate)
endDate.setHours(23, 59, 59, 999) endDate.setUTCHours(23, 59, 59, 999)
// 由于后端会加8小时我们需要减去8小时
startDate = new Date(startDate.getTime() - 8 * 60 * 60 * 1000)
endDate = new Date(endDate.getTime() - 8 * 60 * 60 * 1000)
break break
} }
} else { } else {