【dart时间戳转换日期】仿PHP date函数

main() {
  print(date(1580833594, format: 'yyyy年m月'));
  print(date(1580833594));
  print(date(1580833594, format: '星期W'));
}

String date(int timestamp, {String format = 'yyyy-mm-dd hh:ii:ss'}) {
  DateTime _date = DateTime.fromMillisecondsSinceEpoch(timestamp * 1000);
  String _year = _date.year.toString();

  List _weekCompared = ['日', '一', '二', '三', '四', '五', '六'];
  Map<String,String> o = {
    "w+" : _date.weekday.toString(),                //星期几
    "W+" : _weekCompared[_date.weekday],                //中文星期几
    "m+" : _date.month.toString() ,                 //月份
    "d+" : _date.day.toString(),                    //日
    "h+" : _date.hour.toString(),                   //小时
    "i+" : _date.minute.toString(),                 //分
    "s+" : _date.second.toString(),                 //秒
    "S"  : _date.millisecond.toString()              //毫秒
  };

  if (format.indexOf(new RegExp(r'y+')) > -1) {
    format = format.replaceAllMapped(RegExp(r'y+'), (matches){
      String _temp = '';
      for (var i = 0; i < 4; i++) {
        _temp = _year[4 - i - 1] + _temp;
      }
      return _temp.substring(4 - matches.group(0).length);
    });
  }
  o.forEach((key, val) {
    if(format.indexOf(new RegExp('$key')) > -1) {
      format = format.replaceAllMapped(new RegExp('$key'), (match) {
        return match.group(0).length > 1
          ? (("00" + val.toString()).substring(val.toString().length))
          : val;
      });
    }
  });
  return format;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值