首先,了解一下,flutter时间方面的显示
var t = DateTime.now();
print(t); //当前时间 2021-05-29 19:57:55.180309
var m = t.millisecondsSinceEpoch;
print(m); //时间戳 1622289475180
var s = DateTime.fromMillisecondsSinceEpoch(1622260086181);
print(s); //时间戳转时间 2021-05-29 11:48:06.181
var hours = t.difference(s).inHours;
print(hours);
时间差的函数是x.difference(),后面可以跟天数差,小时差,分钟差,秒差,毫秒差,等
所以,我的代码如下,timeHandler接收传进来一个参数,要求为时间戳
_timeHandler(milliSecond) {
var t = DateTime.now();
print(t); //当前时间戳
var s = DateTime.fromMillisecondsSinceEpoch(milliSecond);
print(s); //时间戳转时间 2021-05-29 11:48:06.181
var timeLag = t.difference(s); //时间戳进行比较
print("时间差:${timeLag}");
print("时间差 天:${timeLag.inDays}");
print("时间差 时:${timeLag.inHours}");
print("时间差 分:${timeLag.inMinutes}");
print('相差时间:${timeLag.inSeconds}');
var dayLag = timeLag.inDays;
var hourLag = timeLag.inHours;
var minLag = timeLag.inMinutes;
var secLag = timeLag.;
if (dayLag > 1 || dayLag == 1) {
//如果时间差大于24小时,显示:x天前
print("${dayLag}天前");
} else if (hourLag < 24 && hourLag > 1) {
//如果时间差小于24小时,显示:x小时前
print("${hourLag}小时前");
} else if (minLag > 0 && minLag < 60) {
//如果时间差小于1小时,显示:x分钟前
print("${minLag}分钟前");
} else if (secLag > 0 && secLag < 60) {
//如果时间差小于1分钟,显示:刚刚
print("刚刚:${secLag}");
}
}
调用:
_timeHandler(1622380140781);
结果如下:
怎么样,是不是很方便?这就是Dart语言的一个好处,如果是js的话,需要自己对时分秒进行计算,但是dart已经帮我们对差值进行封装计算,只需要调用.difference().inHours or inDays