flutter 时间转换为 `刚刚`、`几秒前`、`几分钟前`、`几小时前`、`几天前`、几月前或按照传入格式显示

347 阅读1分钟

import 'package:intl/intl.dart';

///

String formatTimeDifference(DateTime time, {String customFormat}) {

DateTime now = DateTime.now();

Duration difference = now.difference(time);

if (difference.inSeconds < 10) {

return '刚刚';

} else if (difference.inSeconds < 60) {

return '${difference.inSeconds}秒前';

} else if (difference.inMinutes < 60) {

return '${difference.inMinutes}分钟前';

} else if (difference.inHours < 24) {

return '${difference.inHours}小时前';

} else if (difference.inDays < 7) {

return '${difference.inDays}天前';

} else if (difference.inDays < 30) {

int weeks = (difference.inDays / 7).floor();

return '$weeks周前';

} else if (difference.inDays < 365) {

int months = (difference.inDays / 30).floor();

return '$months月前';

} else if (difference.inDays >= 365) {

int year = (difference.inDays / 365).floor();

return '$year年前';

} else {

// 如果传入了 customFormat,则使用传入的格式化字符串

if (customFormat != null) {

return DateFormat(customFormat).format(time);

} else {

// 否则返回默认的格式化字符串

return DateFormat('yyyy-MM-dd HH:mm:ss').format(time);

}

}

}

// void main() {

// // 示例用法

// DateTime pastTime = DateTime.now().subtract(Duration(days: 5));

// print(formatTimeDifference(pastTime)); // 输出:5天前

// DateTime customTime = DateTime.now().subtract(Duration(hours: 2));

// print(formatTimeDifference(customTime, customFormat: 'yyyy/MM/dd HH:mm')); // 输出:2023/12/27 18:30

// }