message_date.dart 1.34 KB
class MessageDate {
  final double time;
  int _currentDate;
  MessageDate(this.time);

  String diffTime() {
    var date = DateTime.now();
    int serverTime = (time * 1000).toInt();
    _currentDate = date.millisecondsSinceEpoch;
    int minuteDifference = ((_currentDate - serverTime) / 1000 / 60).floor();
    int hourDifference = ((_currentDate - serverTime) / 1000 / 60 / 60).ceil();
    int dayDifference = ((_currentDate - serverTime) / 1000 / 60 / 60 / 24).ceil();
    if (hourDifference < 24) {
      if (minuteDifference < 1) {
        return '刚刚';
      } else if (minuteDifference < 60) {
        return '$minuteDifference分钟前';
      }
      return '$hourDifference小时前';
    } else if (hourDifference > 24 && hourDifference < 48) {
      return '昨天前';
    } else {
      int currentYear = DateTime.fromMillisecondsSinceEpoch(serverTime).year;
      int currentDay = DateTime.fromMillisecondsSinceEpoch(serverTime).day;
      int currentMonth = DateTime.fromMillisecondsSinceEpoch(serverTime).month;
      String currentDay2 = currentDay < 10 ? '0$currentDay' : '$currentDay';
      String currentMonth2 = currentMonth < 10 ? '0$currentMonth' : '$currentMonth';
      if (dayDifference < 365) {
        return '$currentMonth2-$currentDay2';
      } else {
        return '$currentYear-$currentMonth2-$currentDay2';
      }
    }
  }
}