format method

String format(
  1. DateTime datetime, [
  2. String format = DEFAULT
])

根据format格式化DateTime,默认format为yyyy-MM-dd HH:mm:ss

Implementation

String format(DateTime datetime, [String format = DEFAULT]) {
  int year = 0, month = 0, day = 0, hour = 0, minute = 0, second = 0;
  format.split('').forEach((chr) {
    switch (chr) {
      case 'y':
        year++;
        break;
      case 'M':
        month++;
        break;
      case 'd':
        day++;
        break;
      case 'H':
        hour++;
        break;
      case 'm':
        minute++;
        break;
      case 's':
        second++;
        break;
    }
  });

  String formatStr = format;
  if (year > 0) {
    var yearStr = datetime.year.toString().substring(year == 4 ? 0 : 2);
    formatStr = formatStr.replaceFirst('y' * year, yearStr);
  }
  if (month > 0) {
    var monthStr = month == 1 ? '${datetime.month}' : '${datetime.month}'.padLeft(2, '0');
    formatStr = formatStr.replaceFirst('M' * month, monthStr);
  }
  if (day > 0) {
    var dayStr = day == 1 ? '${datetime.day}' : '${datetime.day}'.padLeft(2, '0');
    formatStr = formatStr.replaceFirst('d' * day, dayStr);
  }
  if (hour > 0) {
    var hourStr = hour == 1 ? '${datetime.hour}' : '${datetime.hour}'.padLeft(2, '0');
    formatStr = formatStr.replaceFirst('H' * hour, hourStr);
  }
  if (minute > 0) {
    var minuteStr = minute == 1 ? '${datetime.minute}' : '${datetime.minute}'.padLeft(2, '0');
    formatStr = formatStr.replaceFirst('m' * minute, minuteStr);
  }
  if (second > 0) {
    var secondStr = second == 1 ? '${datetime.second}' : '${datetime.second}'.padLeft(2, '0');
    formatStr = formatStr.replaceFirst('s' * second, secondStr);
  }
  return formatStr;
}