Flutter:从时间格式中删除前导零

Flutter: Remove leading zeros from time format

我收到一个格式为 'HH:mm:ss' 的字符串,我需要去掉前导零或将其转换为 minutes/hours。有没有 RegExp 来实现这个?

没有前导零的示例:

00:03:15 => 3:15
10:10:10 => 10:10:10
00:00:00 => 0:00
04:00:00 => 4:00:00
00:42:32 => 42:32
00:00:18 => 0:18
00:00:08 => 0:08

时间转换为minutes/hours

的例子
00:07:00 => 7 min
00:10:30 => 10:30 min
01:40:00 => 1h 40 min

尝试以下方法

将 intl 包添加到您的 pubspec.yaml 文件。

import 'package:intl/intl.dart';

DateFormat dateFormat = DateFormat("HH:mm");

将 DateTime 对象转换为字符串

DateTime yourDate = DateTime.now());
String string = dateFormat.format(yourDate);

也可以试试这个

DateTime yourDate = DateTime.now();
String string =  new DateFormat.Hm().format(yourDate);    // force 24 hour time

更新

要将字符串解析为日期,您可以使用此

DateFormat df = DateFormat('HH:mm:ss');
DateTime dt = df.parse('00:07:00');
String string = DateFormat.Hm().format(dt);

参考资料

看起来在这一点上只使用格式字符串中的单个字符(例如,M 而不是 MM)处理前导零的 trim:

之前:

// Output: 01/01/2021, 02:41 PM
static final dateFormatLeadingZeros = new DateFormat('MM/dd/yyyy, hh:mm a');

之后:

// Output: 1/1/2021, 2:41 PM
static final dateFormatTrimmed = new DateFormat('M/d/yyyy, h:mm a');