关于日期:PHP库生成用户友好的相对时间戳

PHP library to generate user friendly relative timestamps

我正在寻找一个生成用户友好的时间表示的PHP库 - 例如"两小时前"时间戳为time() - 2 * 3600

答案和博客帖子(1,2,3)有几个现有的问题,但都只包含代码片段 - 而不是我可以安装和升级的库。

Django有一个,Python也有一个独立的lib,Javascript也有几个(1,2,3) - 哪里是PHP库?

库应该具有以下内容:

  • 文件
  • 梨可安装
  • 定期发布
  • (可选)翻译


由于似乎没有任何图书馆,我自己制作了一个并将它包含在PEAR中:

Date_HumanDiff,http://pear.php.net/package/Date_HumanDiff

代码位于http://github.com/pear/Date_HumanDiff


我知道Kohana有一个,你可以很容易地移植它。

该函数称为fuzzy_span()

见http://kohanaframework.org/3.3/guide-api/Date#fuzzy_span


Kohana Date类为此提供了fuzzy_span()方法。 但它无法回复你的确切值,如"10分钟"


试试这段代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
$current_date_time_get_updated_on_date_format = '';

function get_updated_on_date_format($dt_updated, $prefix = 'Updated ', $at = 'at ') {
    global $current_date_time_get_updated_on_date_format;

    if ($current_date_time_get_updated_on_date_format == '') {
        $current_date_time_get_updated_on_date_format = now();
    }

    $i_second_now         = strtotime($current_date_time_get_updated_on_date_format);
    $i_second_dt_updated  = strtotime($dt_updated);
    $i_second_diff        = $i_second_now - $i_second_dt_updated;
    $s_return_date_format = '';

    if ($i_second_diff < 0) {
        // Developers Uploading Time, Time Zone Gap Patch
        $s_return_date_format = $prefix . $at . date('g:ia \o
 F jS, Y'
, strtotime($dt_updated));
    } else if ($i_second_diff < 60) {
        $s_return_date_format = $prefix . $i_second_diff . ' seconds ago ';
    } elseif ($i_second_diff < (60 * 60)) {
        $s_return_date_format = $prefix . round(($i_second_diff / 60), 0) . ' minitues ago ';
    } elseif ($i_second_diff < (60 * 60 * 24)) {
        $s_return_date_format = $prefix . round(($i_second_diff / (60 * 60)), 0) . ' hours ago ';
    } else {
        $s_return_date_format = $prefix . $at . date('g:ia \o
 F jS, Y'
, strtotime($dt_updated));
    }

    return $s_return_date_format;

}

function now() {
    // it should extract database time in this format 'YYYY-MM-DD HH:MM:SS'
    return mysql_now_value;
}