0%

Flutter-Dart使用正则表达式格式化时间

在 Flutter 开发的时候,发现 Dart 对于时间的处理比较麻烦,又不想使用外部插件,所以自己动手,写了一个简单的时间处理方法。

话不多说,直接上代码,还请各位大佬指正。

Dart 正则表达式时间处理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/// 建议封装一个工具类,定义此静态方法。
/// 格式化时间 @author: doubleam
/// 默认时间格式为 年-月-日 时:分:秒,可自定义,具体对应关系可参考 PHP 时间处理。
static String dateFormat(DateTime time, {String format = "yyyy-mm-dd hh:ii:ss"}) {
var dateObj = {
'm+': time.month, //月份
'd+': time.day, //日
'h+': time.hour, //小时
'i+': time.minute, //分
's+': time.second, //秒
};
RegExp yearReg = new RegExp(r"(y+)");
if (yearReg.hasMatch(format)) {
var matches = yearReg.allMatches(format);
String match = "${matches.elementAt(0).group(1)}";
format = format.replaceAll(match, "${time.year}".substring(4 - match.length));
}
dateObj.forEach((key, value) {
RegExp replaceReg = new RegExp(r'(' + "$key" + ')');
if (replaceReg.hasMatch(format)) {
var matches = replaceReg.allMatches(format);
String match = "${matches.elementAt(0).group(1)}";
format = format.replaceAll(match, (match.length == 1) ? "$value" : "00$value".substring("$value".length));
}
});
return format;
}
bulb