0%

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

坑!!!在 VsCode 中使用 Dart和Flutter 插件,必须打开项目源代码的根目录(main.dart 所在目录)才有代码提示和相关检查与校验,单独的 .dart 文件 或者打开 多级目录 都是没有的(但是可能会突然有一小会又突然没有,薛定谔的提示0.0!),呜呜呜呜呜…搞得我一直以为是电脑环境的问题,重装了好几次 VsCode 插件与 Flutter SDK。

另外在 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;
}

另外博主有写一个人性化时间的 Dart 方法,可以参考文章Dart 常用方法

bulb