Spaces:
Running
Running
Commit ·
4d2e3e5
1
Parent(s): 9893e3a
fix: 修复日期格式转换问题
Browse files- backend/app/api.py +10 -1
- frontend/src/components/AdminPanel.tsx +1 -1
backend/app/api.py
CHANGED
|
@@ -509,7 +509,16 @@ async def admin_get_users(
|
|
| 509 |
last_login = last_session.created_at.strftime('%Y/%m/%d %H:%M:%S') if last_session and last_session.created_at else None
|
| 510 |
|
| 511 |
# 格式化 VIP 到期时间
|
| 512 |
-
vip_expire_formatted =
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 513 |
|
| 514 |
result.append(AdminUserItem(
|
| 515 |
user_id=u.id,
|
|
|
|
| 509 |
last_login = last_session.created_at.strftime('%Y/%m/%d %H:%M:%S') if last_session and last_session.created_at else None
|
| 510 |
|
| 511 |
# 格式化 VIP 到期时间
|
| 512 |
+
vip_expire_formatted = None
|
| 513 |
+
if vip_info["vip_expire_at"]:
|
| 514 |
+
try:
|
| 515 |
+
# 将字符串解析为 datetime 对象,然后重新格式化为所需格式
|
| 516 |
+
from datetime import datetime
|
| 517 |
+
dt = datetime.strptime(vip_info["vip_expire_at"], '%Y-%m-%d %H:%M:%S')
|
| 518 |
+
vip_expire_formatted = dt.strftime('%Y/%m/%d %H:%M:%S')
|
| 519 |
+
except ValueError:
|
| 520 |
+
# 如果解析失败,使用原始值
|
| 521 |
+
vip_expire_formatted = vip_info["vip_expire_at"].replace('-', '/')
|
| 522 |
|
| 523 |
result.append(AdminUserItem(
|
| 524 |
user_id=u.id,
|
frontend/src/components/AdminPanel.tsx
CHANGED
|
@@ -259,7 +259,7 @@ export default function AdminPanel({ isOpen, onClose }: AdminPanelProps) {
|
|
| 259 |
会员
|
| 260 |
</span>
|
| 261 |
<div className="flex flex-col items-center gap-0.5">
|
| 262 |
-
<span className="text-[9px] text-gray-600 font-mono">{user.vip_expire_at?.split(' ')[0] || ''}</span>
|
| 263 |
<span className="text-[8px] text-gray-600 font-mono">{user.vip_expire_at?.split(' ')[1] || ''}</span>
|
| 264 |
</div>
|
| 265 |
</div>
|
|
|
|
| 259 |
会员
|
| 260 |
</span>
|
| 261 |
<div className="flex flex-col items-center gap-0.5">
|
| 262 |
+
<span className="text-[9px] text-gray-600 font-mono">{user.vip_expire_at?.split(' ')[0].replace(/-/g, '/') || ''}</span>
|
| 263 |
<span className="text-[8px] text-gray-600 font-mono">{user.vip_expire_at?.split(' ')[1] || ''}</span>
|
| 264 |
</div>
|
| 265 |
</div>
|