【问题标题】:How to detect if current date is greater than datetime?如何检测当前日期是否大于日期时间?
【发布时间】:2015-07-29 17:40:18
【问题描述】:

实际上,我想创建一个函数,如果日期大于一,则返回日期,并且应该返回 1 小时前的时间年龄。

我已经完成了将近 80% 的 Time Ago 功能,现在我想再添加一项功能。

function dateTimeExe ($time)
{

    $time = time() - $time; // to get the time since that moment

    $tokens = array (
        31536000 => 'year',
        2592000 => 'month',
        604800 => 'week',
        86400 => 'day',
        3600 => 'hour',
        60 => 'minute',
        1 => 'second'
    );

    foreach ($tokens as $unit => $text) {
        if ($time < $unit) continue;
        $numberOfUnits = floor($time / $unit);
        return $numberOfUnits.' '.$text.(($numberOfUnits>1)?'s':'');
    }

}

请查看输出,这可能有助于理解我的问题。

如果 day 小于 1,那么它工作正常 // 1 min ago1 hour ago 现在我想添加如果 day 大于 1 那么它应该以这种格式返回日期// 18 May 2015

【问题讨论】:

    标签: php algorithm function date datetime


    【解决方案1】:

    您可以通过 getTimestamp() 方法从您的日期时间 (http://php.net/manual/fr/class.datetime.php) 中获取时间戳,最后您可以将它们相互比较

    假设 $date 是一个 Datetime 实例:

    $time = time() - $time->getTimestamp();
    

    【讨论】:

      【解决方案2】:

      实际上,我在函数中添加了 if 语句,现在它可以工作了

      if ($time>86400) {
              return date('d F Y');
          }else{
              foreach ($tokens as $unit => $text) {
                  if ($time < $unit) continue;
                  $numberOfUnits = floor($time / $unit);
                  return $numberOfUnits.' '.$text.(($numberOfUnits>1)?'s':'').' ago';
              }
          }
      

      【讨论】:

      • 是的,这几乎正是我在我的答案中提出的,但有人否决了。几乎,因为您应该返回date('d F Y', $original_time) - 给定时间的日期,而不是今天的日期!顺便说一句,您的答案应该是评论,可能在您的问题下或在回答相同的情况下。
      猜你喜欢
      • 1970-01-01
      • 2013-06-25
      • 2015-01-04
      • 1970-01-01
      • 2011-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      相关资源
      最近更新 更多