String formatTileDateTime(DateTime dateTime) {
  DateTime now = DateTime.now();
  var difference = now.difference(dateTime);

  if (difference.inDays < 1) {
    String hour = dateTime.hour < 10 ? '0${dateTime.hour}' : '${dateTime.hour}';
    String minute =
        dateTime.minute < 10 ? '0${dateTime.minute}' : '${dateTime.minute}';

    return '$hour:$minute';
  } else if (difference.inDays == 1) {
    return '昨天';
  } else if (difference.inDays <= 7) {
    switch (dateTime.weekday) {
      case 1:
        return '星期一';
      case 2:
        return '星期二';
      case 3:
        return '星期三';
      case 4:
        return '星期四';
      case 5:
        return '星期五';
      case 6:
        return '星期六';
      case 7:
        return '星期日';
    }

    return '';
  } else {
    int year = dateTime.year;
    String month =
        dateTime.month < 10 ? '0${dateTime.month}' : '${dateTime.month}';
    String day = dateTime.day < 10 ? '0${dateTime.day}' : '${dateTime.day}';

    return '$year-$month-$day';
  }
}

String formatMessageDateTime(DateTime dateTime) {
  DateTime now = DateTime.now();
  var difference = now.difference(dateTime);
  String hour = dateTime.hour < 10 ? '0${dateTime.hour}' : '${dateTime.hour}';
  String minute =
      dateTime.minute < 10 ? '0${dateTime.minute}' : '${dateTime.minute}';

  if (difference.inDays <= 1 && now.day - dateTime.day == 1) {
    return '昨天 $hour:$minute';
  } else if (difference.inDays < 1) {
    return '$hour:$minute';
  } else if (difference.inDays <= 7) {
    switch (dateTime.weekday) {
      case 1:
        return '星期一 $hour:$minute';
      case 2:
        return '星期二 $hour:$minute';
      case 3:
        return '星期三 $hour:$minute';
      case 4:
        return '星期四 $hour:$minute';
      case 5:
        return '星期五 $hour:$minute';
      case 6:
        return '星期六 $hour:$minute';
      case 7:
        return '星期日 $hour:$minute';
    }

    return '';
  } else {
    int year = dateTime.year;
    String month =
        dateTime.month < 10 ? '0${dateTime.month}' : '${dateTime.month}';
    String day = dateTime.day < 10 ? '0${dateTime.day}' : '${dateTime.day}';

    return '$year-$month-$day $hour:$minute';
  }
}

String formatDirTime(DateTime dateTime) {
  int year = dateTime.year;
  String month =
      dateTime.month < 10 ? '0${dateTime.month}' : '${dateTime.month}';
  String day = dateTime.day < 10 ? '0${dateTime.day}' : '${dateTime.day}';

  return '$year$month$day';
}

String formatMsgIDFromTime(DateTime dateTime) {
  int year = dateTime.year;
  String month =
      dateTime.month < 10 ? '0${dateTime.month}' : '${dateTime.month}';
  String day = dateTime.day < 10 ? '0${dateTime.day}' : '${dateTime.day}';
  String hour = dateTime.hour < 10 ? '0${dateTime.hour}' : '${dateTime.hour}';
  String second =
      dateTime.second < 10 ? '0${dateTime.second}' : '${dateTime.second}';
  String minute =
      dateTime.minute < 10 ? '0${dateTime.minute}' : '${dateTime.minute}';
  String millisecond = dateTime.millisecond >= 100
      ? '${dateTime.millisecond}'
      : dateTime.millisecond < 10
          ? '0${dateTime.minute}'
          : '00${dateTime.minute}';

  return '$year$month$day$hour$minute$second$millisecond';
}