Java代码实现:
/**
* 根据传入的原始日期,获取截取后的消息日期。
* 日期有三种显示形式,今天、昨天、昨天之前。
* <p>
* 例:今天是4月11号:
* 若传入原始日期dateOriginal是"2018-09-03 12:32:40",则返回"2018-09-03 12:32",
* 若传入原始日期dateOriginal是"2019-04-10 12:32:40",则返回"昨天12:32",
* 若传入原始日期dateOriginal是"2019-04-11 12:32:40",则返回"12:32"。
*
* @param dateOriginal 原始日期
* @return 返回截取后的日期
*/
public static String getMessageDate(String dateOriginal) {
long original = 0;
long oneDay = 1000 * 60 * 60 * 24;
try {
//拿到传过来的日期的毫秒值
original = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(dateOriginal).getTime();
} catch (ParseException e) {
e.printStackTrace();
}
//设置一个日期表示今天零点
Calendar today = Calendar.getInstance();
today.set(Calendar.HOUR_OF_DAY, 0);
today.set(Calendar.MINUTE, 0);
today.set(Calendar.SECOND, 0);
today.set(Calendar.MILLISECOND, 0);
//与今天零点比较
if (original >= today.getTimeInMillis()) {
//今天
return dateOriginal.substring(11, 16);
} else {
//与昨天零点比较
if (original >= today.getTimeInMillis() - oneDay) {
//昨天
return "昨天" + dateOriginal.substring(11, 16);
}
}
//都不是返回原始数据,去掉秒数
return dateOriginal.substring(0, 16);
}
Dart实现:
///根据给定的日期得到format后的日期 ///
static String getDate(String dateOriginal) {
//现在的日期
var today = DateTime.now();
//今天的23:59:59
var standardDate = DateTime(today.year, today.month, today.day, 23, 59, 59);
//传入的日期与今天的23:59:59秒进行比较
Duration diff = standardDate.difference(DateTime.parse(dateOriginal));
print('日期比较结果${diff.inDays}');
if (diff < Duration(days: 1)) {
//今天
// 09:20
return dateOriginal.substring(11, 16);
} else if (diff >= Duration(days: 1) && diff < Duration(days: 2)) {
//昨天
//昨天09:20
return "昨天 " + dateOriginal.substring(11, 16);
} else {
//昨天之前
// 2019-01-23 09:20
return dateOriginal.substring(0, 16);
}
}