问题是如何将Dart DateTime格式化为一个字符串,该字符串表示经过的时间,类似于您在Stack Overflow上看到的时间显示方式。
还有比这更好的方法吗
String timeAgo(DateTime d) {
Duration diff = DateTime.now().difference(d);
if (diff.inDays > 365)
return "${(diff.inDays / 365).floor()} ${(diff.inDays / 365).floor() == 1 ? "year" : "years"} ago";
if (diff.inDays > 30)
return "${(diff.inDays / 30).floor()} ${(diff.inDays / 30).floor() == 1 ? "month" : "months"} ago";
if (diff.inDays > 7)
return "${(diff.inDays / 7).floor()} ${(diff.inDays / 7).floor() == 1 ? "week" : "weeks"} ago";
if (diff.inDays > 0)
return "${diff.inDays} ${diff.inDays == 1 ? "day" : "days"} ago";
if (diff.inHours > 0)
return "${diff.inHours} ${diff.inHours == 1 ? "hour" : "hours"} ago";
if (diff.inMinutes > 0)
return "${diff.inMinutes} ${diff.inMinutes == 1 ? "minute" : "minutes"} ago";
return "just now";
}
谢谢你,希望它能帮助其他人
9条答案
按热度按时间o4hqfura1#
我使用timeago的确切目的,并发现它相当有用。它有多种格式和不同的语言支持以及。
scyqe7ek2#
你也可以试试这个软件包Jiffy。
您可以获得从现在开始的相对时间
在Jiffy中操作也很简单
您还可以从指定的时间获取相对时间,而不是现在
afdcj2ne3#
我通过使用DateTime扩展简化了Paresh's answer
创建一个名为
date_time_extension.dart
的新dart文件,然后编写如下代码然后像这样使用它
eni9jsuy4#
我使用timeago的确切目的,并发现它相当有用。
此解决方案适用于希望编写尽可能少的代码的人。
1.通过执行以下操作,将timeago及其版本添加到pubspec.yaml文件得dependencies部分:
dart pub add timeago
1.运行以下命令:
flutter pub get
1.将其导入到代码中:
import 'package:timeago/timeago.dart' as timeago;
1.在代码中使用它:
输出:
2 months ago
2 yr
irlmq6kh5#
你可以使用这个方法,这将给予你以前的时间。
qybjjes16#
希望你得到了答案!你只需要在这个方法中传递你的时间戳值,你就会得到一个时间以前的格式化字符串。
mqxuamgl7#
如果你只是想使用
Datetime
库,这是你可以做到的。这是你得到的:
scyqe7ek8#
2g32fytz9#
@Alex289答案的变体