mirror of
https://github.com/Wei-Shaw/claude-relay-service.git
synced 2026-01-23 09:10:52 +00:00
fix(admin): 修复时区转换和时间显示格式问题
- 修复小时粒度下时间显示为完整日期的问题 - 修复时区转换逻辑,使用正确的UTC偏移计算 - 统一时间标签格式:小时粒度显示MM/DD HH:00,天粒度显示MM/DD - 修复图表时间显示比实际时间快7小时的问题
This commit is contained in:
@@ -5,8 +5,9 @@ const logger = require('../utils/logger');
|
|||||||
// 时区辅助函数
|
// 时区辅助函数
|
||||||
function getDateInTimezone(date = new Date()) {
|
function getDateInTimezone(date = new Date()) {
|
||||||
const offset = config.system.timezoneOffset || 8; // 默认UTC+8
|
const offset = config.system.timezoneOffset || 8; // 默认UTC+8
|
||||||
const utcTime = date.getTime() + (date.getTimezoneOffset() * 60000);
|
// 直接基于UTC时间计算目标时区时间
|
||||||
const targetTime = new Date(utcTime + (offset * 3600000));
|
// 不需要考虑本地时区,因为我们总是基于UTC
|
||||||
|
const targetTime = new Date(date.getTime() + (offset * 3600000));
|
||||||
return targetTime;
|
return targetTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1341,8 +1341,8 @@ router.get('/usage-trend', authenticateAdmin, async (req, res) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
trendData.push({
|
trendData.push({
|
||||||
date: dateStr, // 保持日期格式一致
|
// 对于小时粒度,只返回hour字段,不返回date字段
|
||||||
hour: currentHour.toISOString(),
|
hour: tzCurrentHour.toISOString(), // 使用转换后的时区时间
|
||||||
inputTokens: hourInputTokens,
|
inputTokens: hourInputTokens,
|
||||||
outputTokens: hourOutputTokens,
|
outputTokens: hourOutputTokens,
|
||||||
requests: hourRequests,
|
requests: hourRequests,
|
||||||
@@ -1710,7 +1710,7 @@ router.get('/api-keys-usage-trend', authenticateAdmin, async (req, res) => {
|
|||||||
const keys = await client.keys(pattern);
|
const keys = await client.keys(pattern);
|
||||||
|
|
||||||
const hourData = {
|
const hourData = {
|
||||||
hour: currentHour.toISOString(),
|
hour: tzCurrentHour.toISOString(), // 使用转换后的时区时间
|
||||||
apiKeys: {}
|
apiKeys: {}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -452,6 +452,14 @@ function createUsageTrendChart() {
|
|||||||
const hour = String(date.getHours()).padStart(2, '0')
|
const hour = String(date.getHours()).padStart(2, '0')
|
||||||
return `${month}/${day} ${hour}:00`
|
return `${month}/${day} ${hour}:00`
|
||||||
}
|
}
|
||||||
|
// 按天显示时,只显示月/日,不显示年份
|
||||||
|
const dateStr = d.date
|
||||||
|
if (dateStr && dateStr.includes('-')) {
|
||||||
|
const parts = dateStr.split('-')
|
||||||
|
if (parts.length >= 3) {
|
||||||
|
return `${parts[1]}/${parts[2]}`
|
||||||
|
}
|
||||||
|
}
|
||||||
return d.date
|
return d.date
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -655,6 +663,14 @@ function createApiKeysUsageTrendChart() {
|
|||||||
const hour = String(date.getHours()).padStart(2, '0')
|
const hour = String(date.getHours()).padStart(2, '0')
|
||||||
return `${month}/${day} ${hour}:00`
|
return `${month}/${day} ${hour}:00`
|
||||||
}
|
}
|
||||||
|
// 按天显示时,只显示月/日,不显示年份
|
||||||
|
const dateStr = d.date
|
||||||
|
if (dateStr && dateStr.includes('-')) {
|
||||||
|
const parts = dateStr.split('-')
|
||||||
|
if (parts.length >= 3) {
|
||||||
|
return `${parts[1]}/${parts[2]}`
|
||||||
|
}
|
||||||
|
}
|
||||||
return d.date
|
return d.date
|
||||||
}),
|
}),
|
||||||
datasets: datasets
|
datasets: datasets
|
||||||
|
|||||||
Reference in New Issue
Block a user