时间转换为今天昨天前天几天前

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

时间转换为今天昨天前天⼏天前
经常在朋友圈,QQ空间、微博上看到动态的发布时间、评论时间,都显⽰,昨天,前天,⼏天前,⽐起直接显⽰⼏⽉⼏⽇⼏分⼏秒要优雅的多。

于是⾃⼰的项⽬也想采⽤这种优雅直观的⽅式,⽹上找了各种计算相差⼏天的的例⼦,都是直接将时间戳相见除以86400,⽐如现在是17:08,动态更新的时间为前天22:00,这种⽅式计算的相差天数为1,⽽不是两天前。

实际情况应该是,昨天任何时间都算⼀天前,前天任意时间都算2天前,所以⾃⼰琢磨了⼀番,去动态更新时间与今天23:59:59相差的时间秒数与86400(24 x 3600)相除后,向下取整,这样就得到了相差的天数,⽐如昨天00:00~昨天23:59:59的任何时间与今天的23:59:59,都相差 86400~(86400 x 2)天,也就是2天。

/**
* 获取已经过了多久
* PHP时间转换
* 刚刚、⼏分钟前、⼏⼩时前
* 今天昨天前天⼏天前
* @param string $targetTime 时间戳
* @return string
*/
function get_last_time($targetTime)
{
// 今天最⼤时间
$todayLast = strtotime(date('Y-m-d 23:59:59'));
$agoTimeTrue = time() - $targetTime;
$agoTime = $todayLast - $targetTime;
$agoDay = floor($agoTime / 86400);
if ($agoTimeTrue < 60) {
$result = '刚刚';
} elseif ($agoTimeTrue < 3600) {
$result = (ceil($agoTimeTrue / 60)) . '分钟前';
} elseif ($agoTimeTrue < 3600 * 12) {
$result = (ceil($agoTimeTrue / 3600)) . '⼩时前';
} elseif ($agoDay == 0) {
$result = '今天 ' . date('H:i', $targetTime);
} elseif ($agoDay == 1) {
$result = '昨天 ' . date('H:i', $targetTime);
} elseif ($agoDay == 2) {
$result = '前天 ' . date('H:i', $targetTime);
} elseif ($agoDay > 2 && $agoDay < 16) {
$result = $agoDay . '天前 ' . date('H:i', $targetTime);
} else {
$format = date('Y') != date('Y', $targetTime) ? "Y-m-d H:i" : "m-d H:i";
$result = date($format, $targetTime);
}
return $result;
}
private static String converToTimeString(Date time) {
Date todayEndTime = DateUtils.getTodayEndTime();
long betweenSecondes = DateUtils.betweenSecondes(todayEndTime, time);
int agoDay = new Double(Math.floorDiv(betweenSecondes, 86400)).intValue();
StringBuilder buffer = new StringBuilder(12);
if (agoDay == 0) {
buffer.append("今天 ");
} else if (agoDay == 1) {
buffer.append("昨天 ");
} else if (agoDay == 2) {
buffer.append("前天 ");
} else {
buffer.append(agoDay).append("天前 ");
}
buffer.append(DateUtils.convertDateToString(time, DateUtils.HH_MM_SS));
return buffer.toString();
}。

相关文档
最新文档