import 'package:common_utils/common_utils.dart'; class BeeDateUtil { DateTime? date; BeeDateUtil(this.date); DateTime get _now => DateTime.now(); bool get sameYear => _now.year == this.date!.year; bool get sameMonth => sameYear && _now.month == this.date!.month; bool get sameDay => sameMonth && _now.day == this.date!.day; bool get isYesterday => (DateTime(_now.year, _now.month, _now.day - 1).compareTo( DateTime(this.date!.year, this.date!.month, this.date!.day)) == 0); bool get isDoubleYesterday => (DateTime(_now.year, _now.month, _now.day - 2).compareTo( DateTime(this.date!.year, this.date!.month, this.date!.day)) == 0); String get timeAgo { Duration duration = _now.difference(date!); if (duration.inSeconds <= 60) return '${duration.inSeconds}秒前'; if (duration.inMinutes <= 60) return '${duration.inMinutes}分钟前'; if (duration.inHours <= 12) return '${duration.inHours}小时前'; if (isYesterday) return '昨天'; if (isDoubleYesterday) return '前天'; if (duration.inDays <= 30) return '${duration.inDays}天前'; else return DateUtil.formatDate(date, format: 'yyyy-MM-dd'); } String get timeAgoWithHm { Duration duration = _now.difference(date!); if (duration.inSeconds <= 60) return '${duration.inSeconds}秒前'; if (duration.inMinutes <= 60) return '${duration.inMinutes}分钟前'; if (duration.inHours <= 12) return '${duration.inHours}小时前'; if (isYesterday) return '昨天'; if (isDoubleYesterday) return '前天'; if (duration.inDays <= 30) return '${duration.inDays}天前'; else return DateUtil.formatDate(date, format: 'yyyy-MM-dd HH-mm'); } }