flutter 使用正则表达式进行日期、时间格式化

因为日期、时间格式化在项目里面用得比较多,所以一般封装成一个方法,放在utils文件夹了,所以我先建了一个utils文件夹,然后新建一个文件叫做tools.dart。

class Tools {
  static formatTime(timeStamp, {format = '{y}-{m}-{d} {h}:{i}:{s}'}) {
    if(timeStamp == null) return null;
    if ('$timeStamp'.length == 10) {
      timeStamp *= 1000;
    }
    DateTime date = DateTime.fromMillisecondsSinceEpoch(timeStamp);
    var formatObj = {
      'y': date.year,
      'm': date.month,
      'd': date.day,
      'h': date.hour,
      'i': date.minute,
      's': date.second,
      'a': date.weekday,
    };
    RegExp exp = RegExp("{(y|m|d|h|i|s|a)+}");
    var timeStr = format.replaceAllMapped(exp, (Match match) {
      var result = match.group(0); // {m}
      var key = match.group(1); // m
      var value = formatObj[key];
      if (key == 'a') return ['一', '二', '三', '四', '五', '六', '日'][value! - 1];
      var s = '$value';
      if (result!.isNotEmpty && value! < 10) {
        s = '0$value';
      }
      return s;
    });
    return timeStr;
  }

  static getWeek(timeStamp) {
    if(timeStamp == null) return null;
    String week = '';
    if ('$timeStamp'.length == 10) {
      timeStamp *= 1000;
    }
    DateTime date = DateTime.fromMillisecondsSinceEpoch(timeStamp);
    if (date.weekday == 0) week = "星期日";
    if (date.weekday == 1) week = "星期一";
    if (date.weekday == 2) week = "星期二";
    if (date.weekday == 3) week = "星期三";
    if (date.weekday == 4) week = "星期四";
    if (date.weekday == 5) week = "星期五";
    if (date.weekday == 6) week = "星期六";
    return week;
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值