fix(mobile-app): 修复多个页面时间显示为UTC而非北京时间的问题
后端数据库统一存储UTC时间,前端展示时需调用 .toLocal() 转换为 设备本地时区(中国地区即 UTC+8 北京时间)。 以下5个页面的 _formatDateTime() 方法缺少 .toLocal() 转换, 导致页面显示的时间比北京时间慢8小时: - 预种合并详情页 (pre_planting_merge_detail_page.dart) → 合并时间、签署时间、挖矿开启时间 - 预种持仓页 (pre_planting_position_page.dart) → 购买时间、合并时间 - 合同签署页 (contract_signing_page.dart) → 合同签署时间 - 转让列表页 (transfer_list_page.dart) → 转让创建时间 - 转让详情页 (transfer_detail_page.dart) → 转让各状态时间 修复方式:在格式化前统一调用 dt.toLocal() 将UTC转为本地时区。 后端和数据库保持UTC不变,仅前端展示层做时区转换。 注:ledger_detail_page.dart 已使用 DateTimeUtils.formatDateTime() (内含 .toLocal()),无需修改。 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
532be9a561
commit
55f81ff329
|
|
@ -852,7 +852,8 @@ class _ContractSigningPageState extends ConsumerState<ContractSigningPage> {
|
|||
/// 格式化日期时间
|
||||
String _formatDateTime(DateTime? dateTime) {
|
||||
if (dateTime == null) return '-';
|
||||
return '${dateTime.year}-${dateTime.month.toString().padLeft(2, '0')}-${dateTime.day.toString().padLeft(2, '0')} ${dateTime.hour.toString().padLeft(2, '0')}:${dateTime.minute.toString().padLeft(2, '0')}';
|
||||
final local = dateTime.toLocal();
|
||||
return '${local.year}-${local.month.toString().padLeft(2, '0')}-${local.day.toString().padLeft(2, '0')} ${local.hour.toString().padLeft(2, '0')}:${local.minute.toString().padLeft(2, '0')}';
|
||||
}
|
||||
|
||||
/// 构建合同信息卡片
|
||||
|
|
|
|||
|
|
@ -711,12 +711,13 @@ class _PrePlantingMergeDetailPageState
|
|||
);
|
||||
}
|
||||
|
||||
/// 格式化日期时间
|
||||
/// 格式化日期时间(UTC → 本地时区)
|
||||
String _formatDateTime(DateTime dt) {
|
||||
return '${dt.year}-${dt.month.toString().padLeft(2, '0')}-'
|
||||
'${dt.day.toString().padLeft(2, '0')} '
|
||||
'${dt.hour.toString().padLeft(2, '0')}:'
|
||||
'${dt.minute.toString().padLeft(2, '0')}';
|
||||
final local = dt.toLocal();
|
||||
return '${local.year}-${local.month.toString().padLeft(2, '0')}-'
|
||||
'${local.day.toString().padLeft(2, '0')} '
|
||||
'${local.hour.toString().padLeft(2, '0')}:'
|
||||
'${local.minute.toString().padLeft(2, '0')}';
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -815,11 +815,12 @@ class _PrePlantingPositionPageState
|
|||
);
|
||||
}
|
||||
|
||||
/// 格式化日期时间
|
||||
/// 格式化日期时间(UTC → 本地时区)
|
||||
String _formatDateTime(DateTime dt) {
|
||||
return '${dt.year}-${dt.month.toString().padLeft(2, '0')}-'
|
||||
'${dt.day.toString().padLeft(2, '0')} '
|
||||
'${dt.hour.toString().padLeft(2, '0')}:'
|
||||
'${dt.minute.toString().padLeft(2, '0')}';
|
||||
final local = dt.toLocal();
|
||||
return '${local.year}-${local.month.toString().padLeft(2, '0')}-'
|
||||
'${local.day.toString().padLeft(2, '0')} '
|
||||
'${local.hour.toString().padLeft(2, '0')}:'
|
||||
'${local.minute.toString().padLeft(2, '0')}';
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -649,8 +649,9 @@ class _TransferDetailPageState extends ConsumerState<TransferDetailPage> {
|
|||
}
|
||||
|
||||
String _formatDateTime(DateTime dt) {
|
||||
return '${dt.year}-${dt.month.toString().padLeft(2, '0')}-${dt.day.toString().padLeft(2, '0')} '
|
||||
'${dt.hour.toString().padLeft(2, '0')}:${dt.minute.toString().padLeft(2, '0')}';
|
||||
final local = dt.toLocal();
|
||||
return '${local.year}-${local.month.toString().padLeft(2, '0')}-${local.day.toString().padLeft(2, '0')} '
|
||||
'${local.hour.toString().padLeft(2, '0')}:${local.minute.toString().padLeft(2, '0')}';
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -397,8 +397,9 @@ class _TransferListPageState extends ConsumerState<TransferListPage>
|
|||
}
|
||||
|
||||
String _formatDateTime(DateTime dt) {
|
||||
return '${dt.year}-${dt.month.toString().padLeft(2, '0')}-${dt.day.toString().padLeft(2, '0')} '
|
||||
'${dt.hour.toString().padLeft(2, '0')}:${dt.minute.toString().padLeft(2, '0')}';
|
||||
final local = dt.toLocal();
|
||||
return '${local.year}-${local.month.toString().padLeft(2, '0')}-${local.day.toString().padLeft(2, '0')} '
|
||||
'${local.hour.toString().padLeft(2, '0')}:${local.minute.toString().padLeft(2, '0')}';
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue