Files
eryao/apps/lib/shared/utils/time_format.dart
ZL-Q a83001de0d feat(locale): 实现 App 启动时语言和时区自动设置
- 新增系统语言/时区读取工具函数
- SessionStore 扩展支持时区存储
- 启动流程自动检测并保存系统语言/时区
- 注册时传递语言/时区到后端
- 登录后从服务器同步语言/时区
2026-04-28 17:18:16 +08:00

31 lines
1.1 KiB
Dart

import 'package:flutter/widgets.dart';
import '../../l10n/app_localizations.dart';
String formatRelativeTime(BuildContext context, DateTime dateTime) {
final l10n = AppLocalizations.of(context)!;
final diff = DateTime.now().difference(dateTime);
if (diff.inMinutes < 1) return l10n.timeJustNow;
if (diff.inHours < 1) return l10n.timeMinutesAgo(diff.inMinutes);
if (diff.inDays < 1) return l10n.timeHoursAgo(diff.inHours);
if (diff.inDays < 30) return l10n.timeDaysAgo(diff.inDays);
return '${dateTime.month}/${dateTime.day}';
}
String formatCompactLocalDateTime(String isoString) {
final dateTime = DateTime.parse(isoString).toLocal();
final now = DateTime.now();
final timeText =
'${dateTime.hour.toString().padLeft(2, '0')}:${dateTime.minute.toString().padLeft(2, '0')}';
if (now.year == dateTime.year &&
now.month == dateTime.month &&
now.day == dateTime.day) {
return timeText;
}
final dateText =
'${dateTime.year}-${dateTime.month.toString().padLeft(2, '0')}-${dateTime.day.toString().padLeft(2, '0')}';
return '$dateText $timeText';
}