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); // mvar 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;}
}