Flutter开发 - 列表中时间的展示方式计算(刚刚,x秒前,x分前,x小时前,x天前)

544 阅读1分钟

计算规则都在下方了,只需要传入创建的时间戳就可以返回想要的内容,不解释了哈,大家自己看代码,不复杂:

///评价时间规则,11位的时间戳传入
String getCommentTime(int createAt) {
  ///获取当前时间的时间戳  ~/ 是整除取整数的意思,不加~,除出来是double类型的,带小数点
  var cTimestamp = DateTime.now().millisecondsSinceEpoch;
  var allStamp = cTimestamp - createAt;
  int day = (cTimestamp - createAt) ~/ (1000 * 60 * 60 * 24);
  int hour = (cTimestamp - createAt) % (1000 * 60 * 60 * 24) ~/ (1000 * 60 * 60);
  int minute = (cTimestamp - createAt) % (1000 * 60 * 60 * 24) % (1000 * 60 * 60) ~/ (1000 * 60);
  int second = (cTimestamp - createAt) % (1000 * 60 * 60 * 24) % (1000 * 60 * 60) % (1000 * 60) ~/ 1000;
  if (day == 0 && hour == 0 && minute == 0 && second < 60) {
    return '刚刚';
  } else if (day == 0 && hour == 0 && minute < 60) {
    ///也可以不用toString的,习惯操作,安全点,看个人哈
    return '${minute.toString()}分钟前';
  } else if (day == 0 && hour < 24 && hour > 0) {
    return '${hour.toString()}小时前';
  } else if (day > 0 && day < 7) {
    return '${day.toString()}天前';
  } else {
    DateTime date = DateTime.fromMillisecondsSinceEpoch(createAt);
    return date.toLocal().toString().substring(0, 19);
  }
}

觉得有用,就给个👍吧!