fix(admin): 修复时区转换和时间显示格式问题

- 修复小时粒度下时间显示为完整日期的问题
- 修复时区转换逻辑,使用正确的UTC偏移计算
- 统一时间标签格式:小时粒度显示MM/DD HH:00,天粒度显示MM/DD
- 修复图表时间显示比实际时间快7小时的问题
This commit is contained in:
shaw
2025-07-30 09:42:09 +08:00
parent 61b1a0ec32
commit 5503004b66
3 changed files with 22 additions and 5 deletions

View File

@@ -5,8 +5,9 @@ const logger = require('../utils/logger');
// 时区辅助函数
function getDateInTimezone(date = new Date()) {
const offset = config.system.timezoneOffset || 8; // 默认UTC+8
const utcTime = date.getTime() + (date.getTimezoneOffset() * 60000);
const targetTime = new Date(utcTime + (offset * 3600000));
// 直接基于UTC时间计算目标时区时间
// 不需要考虑本地时区因为我们总是基于UTC
const targetTime = new Date(date.getTime() + (offset * 3600000));
return targetTime;
}

View File

@@ -1341,8 +1341,8 @@ router.get('/usage-trend', authenticateAdmin, async (req, res) => {
}
trendData.push({
date: dateStr, // 保持日期格式一致
hour: currentHour.toISOString(),
// 对于小时粒度只返回hour字段不返回date字段
hour: tzCurrentHour.toISOString(), // 使用转换后的时区时间
inputTokens: hourInputTokens,
outputTokens: hourOutputTokens,
requests: hourRequests,
@@ -1710,7 +1710,7 @@ router.get('/api-keys-usage-trend', authenticateAdmin, async (req, res) => {
const keys = await client.keys(pattern);
const hourData = {
hour: currentHour.toISOString(),
hour: tzCurrentHour.toISOString(), // 使用转换后的时区时间
apiKeys: {}
};