fix(mini-user): 去掉 Intl,兼容微信小程序无 Intl 环境

门店详情走马灯与核销成功时间改为纯 Date 计算东八区格式。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-03 14:37:44 +08:00
parent 021b9e0329
commit 2088a1ee19
3 changed files with 26 additions and 36 deletions
@@ -15,6 +15,7 @@ import ShareNavButton from '../../components/ShareNavButton';
import StoreRedeemMarquee from '../../components/StoreRedeemMarquee';
import WechatShareReady from '../../components/WechatShareReady';
import { request, toast } from '../../lib/api';
import { formatShanghaiDateTime } from '../../lib/datetime';
import {
DEFAULT_SHARE_DESC,
DEFAULT_SHARE_TITLE,
@@ -91,26 +92,7 @@ function pickStoreId(raw?: string | null) {
/** 与历史记录一致:2026-08-03 15:14:30Asia/Shanghai */
function formatRedeemTime(input?: string | null) {
const d = input ? new Date(input) : new Date();
if (Number.isNaN(d.getTime())) {
// 后端若已是 "2026-08-03 15:14:30" 直接展示
const s = String(input || '').trim();
if (/^\d{4}-\d{2}-\d{2}/.test(s)) return s.slice(0, 19).replace('T', ' ');
return '—';
}
const parts = new Intl.DateTimeFormat('en-CA', {
timeZone: 'Asia/Shanghai',
year: 'numeric',
month: '2-digit',
day: '2-digit',
hour: '2-digit',
minute: '2-digit',
second: '2-digit',
hour12: false,
}).formatToParts(d);
const get = (type: Intl.DateTimeFormatPartTypes) =>
parts.find((p) => p.type === type)?.value ?? '';
return `${get('year')}-${get('month')}-${get('day')} ${get('hour')}:${get('minute')}:${get('second')}`;
return formatShanghaiDateTime(input);
}
function formatRedeemAmountYuan(amount: number | string) {