【问题标题】:Future timeago method in PHP or JavaScript/jQueryPHP 或 JavaScript/jQuery 中的未来 timeago 方法
【发布时间】:2014-08-29 09:46:41
【问题描述】:

我正在为此浏览 STO 和网络,但找不到任何相关内容。

我正在寻找一种方法/函数来打印出可读的未来时间,例如:

  • 3 小时后
  • 一年后

我将未来的日期存储到表中的 datetime 列中,我需要它来预测发布时还剩多少时间等。

这样的事情已经完成了吗?如果是这样 - 请帮忙。

这是我目前在 PHP 中的 timeago

(我也有这个方法的本地化版本,用于塞尔维亚-克罗地亚-波斯尼亚语)

public static function time_elapsed($ptime) {
    $etime = time() - $ptime;

    if ($etime < 1) {
        return '0 seconds';
    }

    $a = array(12 * 30 * 24 * 60 * 60 => 'year',
        30 * 24 * 60 * 60 => 'month',
        24 * 60 * 60 => 'day',
        60 * 60 => 'hour',
        60 => 'min',
        1 => 'sec'
    );

    foreach ($a as $secs => $str) {
        $d = $etime / $secs;
        if ($d >= 1) {
            $r = round($d);
            return $r . ' ' . $str . ($r > 1 ? 's' : '') . ' ago';
        }
    }
}

【问题讨论】:

  • 我不明白你的意思...请详细说明。
  • 这是一个未来的日期,比如 2014-07-31,> 3 周后...我正在将我的代码发布在帖子中,请稍候。
  • Reversed timeago 对我来说意味着您有字符串“从现在起 3 年”并且想要一个日期。在 PHP 中,您将使用 strtotime('now + 3 years') 获取时间戳,您可以使用 date() 将其格式化为日期。首先,您还没有说“从现在起 3 年内”从哪里得到字符串。
  • 不,我不想要日期,因为我已经将它存储在表中。我想将该日期转换为可读的字符串,例如:“从现在起 666 年”等。
  • 我已经说过了:我有一个timeago的解决方案!我现在需要反之亦然。

标签: javascript php jquery timeago


【解决方案1】:

我建议使用http://momentjs.com/。它具有您正在寻找的功能。见http://momentjs.com/docs/#/displaying/from/

例子:

<script>
var my_date = moment('2014-07-07');
$("#date").val(start.from(my_date) + " from now"); // "in 5 days from now"
</script>

【讨论】:

  • @zlomerovic 可以通过 npm、bower 或手动安装。这假定您希望在客户端进行时间操作。
  • 不,我在服务器端执行此操作。不过还是谢谢。
【解决方案2】:

如果我正确理解你想要的,试试这个:

function time_elapsed($ptime) {
    $etime = $ptime - time();

    if ($etime < 1) {
        return '0 seconds';
    }

    $a = array(12 * 30 * 24 * 60 * 60 => 'year',
        30 * 24 * 60 * 60 => 'month',
        24 * 60 * 60 => 'day',
        60 * 60 => 'hour',
        60 => 'min',
        1 => 'sec'
    );

    foreach ($a as $secs => $text) {
        $d = $etime / $secs;
        if ($d >= 1) {
            $r = round($d);
            return "In " . $r . ' ' . $text . ($r > 1 ? 's' : '') . ' from now';
        }
    }
}

$time_elapsed = time_elapsed(time() + 36000); // prints In 10 hours from now 
var_dump($time_elapsed);

【讨论】:

  • 谢谢布拉克。这就是我一直在寻找的。干杯!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多