首页 > 后端开发 > php教程 > 如何在 PHP 中将时间戳转换为人类可读的相对日期和时间?

如何在 PHP 中将时间戳转换为人类可读的相对日期和时间?

Mary-Kate Olsen
发布: 2024-12-13 11:06:20
原创
695 人浏览过

How to Convert Timestamps to Human-Readable Relative Dates and Times in PHP?

将时间戳转换为相对日期/时间

在 PHP 中,您可以轻松地将时间戳转换为用户友好的相对日期/时间字符串,该字符串适用于过去和未来的时间戳。通过使时间戳适应这种格式,您可以通过提供直观的时间表示来增强用户体验。

要完成此转换,您可以利用以下函数:

function time2str($ts)
{
    // Handle non-numeric timestamps
    if (!ctype_digit($ts)) {
        $ts = strtotime($ts);
    }

    $diff = time() - $ts;

    // Handle current time
    if ($diff == 0) {
        return 'now';
    }

    // Handle past timestamps
    if ($diff > 0) {
        $day_diff = floor($diff / 86400);
        if ($day_diff == 0) {
            // Handle minutes and hours ago
            if ($diff < 60) {
                return 'just now';
            } elseif ($diff < 120) {
                return '1 minute ago';
            } elseif ($diff < 3600) {
                return floor($diff / 60) . ' minutes ago';
            } elseif ($diff < 7200) {
                return '1 hour ago';
            } elseif ($diff < 86400) {
                return floor($diff / 3600) . ' hours ago';
            }
        } elseif ($day_diff == 1) {
            return 'Yesterday';
        } elseif ($day_diff < 7) {
            return $day_diff . ' days ago';
        } elseif ($day_diff < 31) {
            return ceil($day_diff / 7) . ' weeks ago';
        } elseif ($day_diff < 60) {
            return 'last month';
        } else {
            return date('F Y', $ts);
        }
    }

    // Handle future timestamps
    else {
        $diff = abs($diff);
        $day_diff = floor($diff / 86400);
        if ($day_diff == 0) {
            // Handle minutes and hours from now
            if ($diff < 120) {
                return 'in a minute';
            } elseif ($diff < 3600) {
                return 'in ' . floor($diff / 60) . ' minutes';
            } elseif ($diff < 7200) {
                return 'in an hour';
            } elseif ($diff < 86400) {
                return 'in ' . floor($diff / 3600) . ' hours';
            }
        } elseif ($day_diff == 1) {
            return 'Tomorrow';
        } elseif ($day_diff < 4) {
            return date('l', $ts);
        } elseif ($day_diff < 7 + (7 - date('w'))) {
            return 'next week';
        } elseif (ceil($day_diff / 7) < 4) {
            return 'in ' . ceil($day_diff / 7) . ' weeks';
        } elseif (date('n', $ts) == date('n') + 1) {
            return 'next month';
        } else {
            return date('F Y', $ts);
        }
    }
}
登录后复制

通过使用此函数,您可以轻松地从时间戳生成用户友好的相对日期/时间字符串。

以上是如何在 PHP 中将时间戳转换为人类可读的相对日期和时间?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板