PHP 版本:
<?php
// 当前时间戳
$now = time();
// 给定的时间字符串
$givenTime = strtotime("2024-08-08 09:39:59");
// 计算时间差
$diff = $now - $givenTime;
// 转换时间差为可读格式
$readableDiff = "";
if ($diff < 60) {
$readableDiff = $diff . " 秒前";
} elseif ($diff < 3600) {
$readableDiff = round($diff / 60) . " 分钟前";
} elseif ($diff < 86400) {
$readableDiff = round($diff / 3600) . " 小时前";
} else {
$days = round($diff / 86400);
$readableDiff = $days . " 天前";
}
echo $readableDiff;
?>
JavaScript 版本:
// 当前时间
const now = new Date();
// 给定的时间字符串
const givenTime = new Date("2024-08-08T09:39:59");
// 计算时间差(毫秒)
const diff = now - givenTime;
// 转换时间差为可读格式
let readableDiff = "";
if (diff < 1000 * 60) {
readableDiff = `${Math.floor(diff / 1000)} 秒前`;
} else if (diff < 1000 * 60 * 60) {
readableDiff = `${Math.floor(diff / (1000 * 60))} 分钟前`;
} else if (diff < 1000 * 60 * 60 * 24) {
readableDiff = `${Math.floor(diff / (1000 * 60 * 60))} 小时前`;
} else {
const days = Math.floor(diff / (1000 * 60 * 60 * 24));
readableDiff = `${days} 天前`;
}
console.log(readableDiff);
注意:这里的时间差计算是简化的,没有考虑时区差异,如果需要考虑时区,则需要对给定的时间字符串进行适当的处理。同时,对于“秒前”的转换,我直接使用了整数除法,这可能会导致在刚好跨过一个时间单位(如秒转分钟)时,显示的时间差有轻微的误差。对于大多数应用场景,这种误差是可以接受的。