PHP: найдите разницу между двумя датами («YmdHis») reture

Мне нужно найти разницу в день от date("YmdHis") Скажем, одно значение:

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

Теперь мне нужно найти единственную разницу в день между двумя значениями. Любое их сердце может помочь мне найти ценность?

Просто конвертируйте свои даты в метки времени, а затем вычтите previous_date из current_date и разделите их на количество секунд в день. Это пример:

 $day = 60*60*24; $now = time(); $target = strtotime('2010-12-24'); $diff = round(($target - $now) / $day); echo $diff; 

Если вы хотите количество дней между ними, вычитайте $ diff на единицу.

Для PHP> = 5.3.0:

 $prev = DateTime::createFromFormat("YmdHis", '20101202115755'); $curr = new DateTime(); $diff = $curr->diff($prev); echo "Difference: ".$diff->days; 
 <?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; ?> 

У вас странный формат …

  1. Разберите его, чтобы получить strptime метку UNIX с strptime и mktime :

     $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 

При этом, если возможно, попробуйте сохранить или получить дату не как 20101202115755 а как 20101202115755 метку UNIX. Тогда вам не придется перебирать хлопоты.

Рабочий ДЕМО