【问题标题】:change elgg php function to javascript function将 elgg php 函数更改为 javascript 函数
【发布时间】:2026-02-06 00:50:01
【问题描述】:

将 elgg_get_friendly_time 更改为 javascript

我在这个$params = array('time' => $time);return elgg_echo("friendlytime:justnow"); 中击中了

<?php

function elgg_get_friendly_time($time) {

// return a time string to short circuit normal time formatting
$params = array('time' => $time);
$result = elgg_trigger_plugin_hook('format', 'friendly:time', $params, NULL);
if ($result) {
return $result;
}

$diff = time() - (int)$time;

$minute = 60;
$hour = $minute * 60;
$day = $hour * 24;

if ($diff < $minute) {
return elgg_echo("friendlytime:justnow");
} else if ($diff < $hour) {
$diff = round($diff / $minute);
if ($diff == 0) {
$diff = 1;
}

if ($diff > 1) {
return elgg_echo("friendlytime:minutes", array($diff));
} else {
return elgg_echo("friendlytime:minutes:singular", array($diff));
}
} else if ($diff < $day) {
$diff = round($diff / $hour);
if ($diff == 0) {
$diff = 1;
}

if ($diff > 1) {
return elgg_echo("friendlytime:hours", array($diff));
} else {
return elgg_echo("friendlytime:hours:singular", array($diff));
}
} else {
$diff = round($diff / $day);
if ($diff == 0) {
$diff = 1;
}

if ($diff > 1) {
return elgg_echo("friendlytime:days", array(diff));
} else {
return elgg_echo("friendlytime:days:singular", array($diff));
}
}
}

?>

【问题讨论】:

  • 有些事情告诉我你真的应该考虑使用 DateTime 来解决这个问题......

标签: javascript php function time elgg


【解决方案1】:

我查阅了该函数的文档:

http://reference.elgg.org/engine_2lib_2output_8php.html#aa008ab7b454c680f83ca7a62409c6ab5

它提醒我我有一些 JS 代码可以做类似的事情,这可能会对你有所帮助:

function get_friendly_date(date) {
    var now = new Date();
    var diff = Math.floor((now - date) / 1000); // seconds
    var min = 60;           // seconds
    var hour = 3600;        // seconds
    var day = 86400;        // seconds
    var month = 30.5 * day; // seconds
    months = Math.floor(diff / month);
    if (months >= 1) return months + " months ago";
    else {
        days = Math.floor(diff / day);
        if (days == 1) return days + " day ago";
        else if (days > 1) return days + " days ago";
        else {
            hours = Math.floor(diff / hour);
            if (hours == 1) return hours + " hour ago"
            else if (hours > 1) return hours + " hours ago";
            else {
                mins = Math.floor(diff / min);
                if (mins == 1) return mins + " min ago";
                else if (mins > 1) return mins + " mins ago";
                else {
                    return diff + " seconds ago";
                }
            }
        }
    }
}

我放了一个小提琴,你可以在这里玩:

http://jsfiddle.net/hM2LU/

希望有帮助!

【讨论】: