| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- // 格式化工具函数
- /**
- * 格式化日期 YYYY-MM-DD
- */
- export function formatDate(dateStr: string | Date | null | undefined): string {
- if (!dateStr) return '-';
- const d = new Date(dateStr);
- if (isNaN(d.getTime())) return String(dateStr);
- const year = d.getFullYear();
- const month = String(d.getMonth() + 1).padStart(2, '0');
- const day = String(d.getDate()).padStart(2, '0');
- return `${year}-${month}-${day}`;
- }
- /**
- * 格式化日期时间 YYYY-MM-DD HH:mm
- */
- export function formatDateTime(dateStr: string | Date | null | undefined): string {
- if (!dateStr) return '-';
- const d = new Date(dateStr);
- if (isNaN(d.getTime())) return String(dateStr);
- const year = d.getFullYear();
- const month = String(d.getMonth() + 1).padStart(2, '0');
- const day = String(d.getDate()).padStart(2, '0');
- const hour = String(d.getHours()).padStart(2, '0');
- const minute = String(d.getMinutes()).padStart(2, '0');
- return `${year}-${month}-${day} ${hour}:${minute}`;
- }
- /**
- * 格式化金额(带千分位分隔符,保留2位小数)
- */
- export function formatMoney(amount: number | null | undefined): string {
- if (amount == null || isNaN(amount)) return '0.00';
- return Number(amount).toLocaleString('zh-CN', {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2
- });
- }
- /**
- * 格式化数量(带千分位分隔符,无小数)
- */
- export function formatNumber(num: number | null | undefined): string {
- if (num == null || isNaN(num)) return '0';
- return Number(num).toLocaleString('zh-CN');
- }
- /**
- * 格式化百分比
- */
- export function formatPercent(value: number, total: number): string {
- if (total === 0) return '0%';
- const percent = (value / total) * 100;
- return `${percent.toFixed(1)}%`;
- }
|