首页 >后端开发 >php教程 >如何在 PHP 中从 Unix 时间戳生成相对日期/时间字符串?

如何在 PHP 中从 Unix 时间戳生成相对日期/时间字符串?

DDD
DDD原创
2024-11-26 21:55:10690浏览

How Can I Generate Relative Date/Time Strings from Unix Timestamps in PHP?

从 PHP 中的时间戳生成相对日期/时间

简介

确定相对日期/time 基于时间戳是编程中的常见任务。当考虑不同的时间间隔和转换方向(过去或未来)时,此功能变得更加复杂。

答案

下面的函数提供了一种全面的转换方法Unix 时间戳(使用 time() 函数获得)相对日期/时间格式,考虑过去和未来。它生成的输出例如:


  • 2 周前

  • 1 小时 60 分钟前

  • 15分54秒ago

  • 10分15秒后

该函数采用一系列条件语句来确定适当的时间表示基于当前时间和当前时间之间的差异时间戳:

<br>function time2str($ts)<br>{<pre class="brush:php;toolbar:false">// Handle syntax variations
if(!ctype_digit($ts)) $ts = strtotime($ts);

// Calculate the difference between now and the timestamp
$diff = time() - $ts;

// Check for exact matches to simplify handling
if($diff == 0) return 'now';

// Handle past timestamps
if($diff > 0)
{
    // Calculate day difference
    $day_diff = floor($diff / 86400);

    // Format past time intervals
    switch(true)
    {
        case ($day_diff == 0):    return constructPastInterval($diff); // Hours, minutes, seconds
        case ($day_diff == 1):    return 'Yesterday';
        case ($day_diff < 7):    return $day_diff . ' days ago';
        case ($day_diff < 31):   return ceil($day_diff / 7) . ' weeks ago';
        case ($day_diff < 60):   return 'last month';
        default:               return date('F Y', $ts);
    }
}
// Handle future timestamps
else
{
    // Calculate absolute difference
    $diff = abs($diff);
    
    // Calculate day difference and format future time intervals based on logic similar to the past case.
}

}

ConstructionPastInterval() 函数未在此响应中显示,但处理过去间隔的格式(小时、分钟、秒)。

此函数提供了一个强大且通用的解决方案,用于从时间戳生成相对日期/时间表示,无需多个脚本或复杂的自定义编码。

以上是如何在 PHP 中从 Unix 时间戳生成相对日期/时间字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn