【问题标题】:How to get date from dateTime object如何从 dateTime 对象中获取日期
【发布时间】:2016-04-21 20:00:47
【问题描述】:

我正在尝试比较两个日期 - 以分钟为单位检查它们之间的差异。 我的代码是:

$first_date = new DateTime($token->created_at);
$first_date->format('Y-m-d H:i:s');

$second_date = new DateTime();
$second_date->format('Y-m-d H:i:s');

$difference = $first_date->diff($second_date);
$time_diff = $difference->format("%i");

var_dump($first_date);

//I get this object
object(DateTime)#552 (3) {
  ["date"]=>
  string(26) "2016-04-21 10:00:00.000000"
  ["timezone_type"]=>
  int(3)
  ["timezone"]=>
  string(3) "UTC"
}

如何从这个 DateTime 对象中获取日期,所以我应该比较两个日期并检查它们之间的差异。 谢谢。

【问题讨论】:

    标签: php datetime compare diff


    【解决方案1】:
    $difference_in_hours = (($second_date->getTimestamp() - $first_date->getTimestamp())/3600);
    

    如果两个日期相差大于 60 分钟:

    if($difference_in_hours>1)
    {
      //if so, insert your desired code here
    }
    

    【讨论】:

    • 如果两个日期之间的差异是例如 - 2 天 0 小时 5 分钟 -> 这段代码是否正常工作并且应该是 $difference_in_hours>1
    • @mistery_girl 正确。 $difference_in_hours 字面意思是总小时数。如果它们之间有 2 天,那么 $difference_in_hours 将等于 48(即 48 小时)。
    • 感谢您的解释。 :)))
    【解决方案2】:
    echo $first_date->format('Y-m-d H:i:s');
    

    【讨论】:

      【解决方案3】:

      以秒为单位的差异:

      $diff_in_seconds = $first_date->getTimestamp() - $second_date->getTimestamp();
      

      检查 diff 是否超过 60 分钟:

      if($diff_in_seconds > 60 * 60){
           echo("more than 60 minutes difference");
      }
      

      【讨论】:

      • 我想检查两个日期之间的差是否大于 60 分钟。
      【解决方案4】:

      您可以按如下方式查看经过的时间(以分钟为单位):

      $interval = $first_date->diff($second_date);
      $elapsed = $interval->format('%i minutes');
      echo $elapsed;
      

      【讨论】:

      • 谢谢大家!我是这样做的:$time_diff = $difference->format("%h"); - 我应该比较小时而不是分钟。
      猜你喜欢
      • 2017-09-04
      • 2014-09-17
      • 1970-01-01
      • 1970-01-01
      • 2011-05-05
      • 2010-10-09
      • 2016-07-24
      • 2013-03-23
      • 2011-01-02
      相关资源
      最近更新 更多