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

2023-12-11 20:40:47 浏览数 (2)

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

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

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

Dart 正则表达式时间处理

代码语言:javascript复制
/// 建议封装一个工具类,定义此静态方法。
/// 格式化时间 @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 常用方法。

0 人点赞