feat:根据浏览器日期格式化

This commit is contained in:
2026-05-09 15:32:58 +08:00
parent 7743c14e83
commit 3ae2c0e7d1
2 changed files with 28 additions and 1 deletions

View File

@@ -9,6 +9,7 @@ import {
CardTitle,
} from "@/components/ui/card";
import { Skeleton } from "@/components/ui/skeleton";
import { formatLocalDateTime } from "@/lib/format-local-datetime";
import { formatMinorAsCurrency } from "@/lib/money";
import type { WalletLogItem, WalletLogsData } from "@/types/api/wallet-logs";
@@ -153,7 +154,7 @@ export function LogRow({
</span>
</span>
<p className="mt-1 text-xs text-muted-foreground">
{item.created_at?.replace("T", " ").slice(0, 19) ?? "—"}{" "}
{formatLocalDateTime(item.created_at)}{" "}
<span className="text-foreground/80">
· {txnStatusLabel(item.status)}
</span>

View File

@@ -0,0 +1,26 @@
function pad2(n: number): string {
return String(n).padStart(2, "0");
}
/**
* 将接口 ISO 8601 时间格式化为浏览器 **本地时区** 下的 `YYYY-MM-DD HH:mm:ss`。
*
* 避免对原始字符串仅 `slice(0,19)`(易把 UTC 刻度误当本地钟面)。
*/
export function formatLocalDateTime(iso: string | null | undefined): string {
if (iso == null || iso === "") {
return "—";
}
const ms = Date.parse(iso);
if (Number.isNaN(ms)) {
return "—";
}
const date = new Date(ms);
const y = date.getFullYear();
const m = pad2(date.getMonth() + 1);
const d = pad2(date.getDate());
const h = pad2(date.getHours());
const min = pad2(date.getMinutes());
const s = pad2(date.getSeconds());
return `${y}-${m}-${d} ${h}:${min}:${s}`;
}