feat:根据浏览器日期格式化
This commit is contained in:
@@ -9,6 +9,7 @@ import {
|
|||||||
CardTitle,
|
CardTitle,
|
||||||
} from "@/components/ui/card";
|
} from "@/components/ui/card";
|
||||||
import { Skeleton } from "@/components/ui/skeleton";
|
import { Skeleton } from "@/components/ui/skeleton";
|
||||||
|
import { formatLocalDateTime } from "@/lib/format-local-datetime";
|
||||||
import { formatMinorAsCurrency } from "@/lib/money";
|
import { formatMinorAsCurrency } from "@/lib/money";
|
||||||
import type { WalletLogItem, WalletLogsData } from "@/types/api/wallet-logs";
|
import type { WalletLogItem, WalletLogsData } from "@/types/api/wallet-logs";
|
||||||
|
|
||||||
@@ -153,7 +154,7 @@ export function LogRow({
|
|||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
<p className="mt-1 text-xs text-muted-foreground">
|
<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">
|
<span className="text-foreground/80">
|
||||||
· {txnStatusLabel(item.status)}
|
· {txnStatusLabel(item.status)}
|
||||||
</span>
|
</span>
|
||||||
|
|||||||
26
src/lib/format-local-datetime.ts
Normal file
26
src/lib/format-local-datetime.ts
Normal 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}`;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user