From 2aadaa0205d76177812d2825bdb56d3e06da84ba Mon Sep 17 00:00:00 2001 From: mmc <1556375442@qq.com> Date: Thu, 16 Apr 2026 10:43:58 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E6=97=B6=E9=95=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../widgets/work_params_card.dart | 26 +++++++++++++++---- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/lib/features/home/presentation/widgets/work_params_card.dart b/lib/features/home/presentation/widgets/work_params_card.dart index b7f13dc7..46bbc953 100644 --- a/lib/features/home/presentation/widgets/work_params_card.dart +++ b/lib/features/home/presentation/widgets/work_params_card.dart @@ -107,19 +107,35 @@ class _WorkParamsCardState extends State { } // ====================== 核心:根据时间戳计算时长 ====================== + // 修复时间解析:适配 20-1-11-31 08:00:00 格式 void _calculateWorkingTime(String timestampStr) { - try { - // 你的时间格式:20-1-11-31 08:00:00 - DateTime currentTime = DateFormat("yy-MM-dd HH:mm:ss").parse(timestampStr); + debugPrint('⏱️ [时间戳] 原始字符串: $timestampStr'); + if (timestampStr.isEmpty) return; - // 第一次进入,记录开始时间 + try { + // 格式:年-月-日-星期 时:分:秒 + // 我们只取 年-月-日 时:分:秒 来解析 + List parts = timestampStr.split(' '); + if (parts.length != 2) return; + + String datePart = parts[0]; // 20-1-11-31 + String timePart = parts[1]; // 08:00:00 + + List dateSegments = datePart.split('-'); + if (dateSegments.length < 3) return; + + // 只取 年-月-日,丢弃星期 + String cleanDate = '${dateSegments[0]}-${dateSegments[1]}-${dateSegments[2]}'; + DateTime currentTime = DateFormat("yy-MM-dd HH:mm:ss").parse('$cleanDate $timePart'); + + // 记录第一次时间 if (_firstTimestamp == null) { setState(() { _firstTimestamp = currentTime; }); } - // 计算相差分钟数 + // 计算分钟 final diff = currentTime.difference(_firstTimestamp!); setState(() { _totalWorkMinutes = diff.inMinutes;