PHP:找到两个日期(“YmdHis”)返回之间的日差

时间:2010-12-12 09:50:31

标签: php datetime

我需要找到date("YmdHis") value.let的日差,说一个值是:

$previous_date='20101202115755';
$current_date= date("YmdHis");
$day_difference=?????

现在我需要找到两个值之间唯一的一天差异。他们是否有任何善良的心可以帮助我找到价值?

4 个答案:

答案 0 :(得分:7)

对于PHP> = 5.3.0:

$prev = DateTime::createFromFormat("YmdHis", '20101202115755');
$curr = new DateTime();
$diff = $curr->diff($prev);
echo "Difference: ".$diff->days;

答案 1 :(得分:1)

只需将日期转换为时间戳,然后从current_date中减去previous_date并除以一天中的秒数。这是一个例子:

$day = 60*60*24;

$now = time();
$target = strtotime('2010-12-24');

$diff = round(($target - $now) / $day);
echo $diff;

如果您想要介于两者之间的天数,请将$ diff减一。

答案 2 :(得分:0)

你有一种奇怪的格式......

  1. 解析它以获得UNIX timestamp strptimemktime

    $d = strptime($previous_date, '%Y%m%d%H%M%S');
    $prev_ts = mktime($d['tm_hour'], $d['tm_min'], $d['tm_sec'], $d['tm_mon'] + 1, $d['tm_mday'], $d['tm_year'] + 1900);
    
  2. 减去时间戳(time()给出当前时间):

    $diff = time() - $prev_ts;
    
  3. 除以60*60*24秒以获得天数差异:

    $diff = floor($diff / (60*60*24)); // or round(), ceil() whatever fits best
    
  4. 那就是说,如果可能的话,尝试存储或获取日期不是20101202115755而是UNIX时间戳。然后你不必经历转换麻烦。

    Working DEMO

答案 3 :(得分:0)

<?php
$previous_date="201012021157552";
$previous_date_as_time = mktime(
  substr($previous_date, 8, 2),
  substr($previous_date, 10, 2),
  substr($previous_date, 12, 2),
  substr($previous_date, 4, 2),
  substr($previous_date, 6, 2),
  substr($previous_date, 0, 4)
);

$days_between_dates = (time() - $previous_date_as_time) / 86400;

echo $days_between_dates;
?>