Мне нужно найти разницу в день от 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; ?>
У вас странный формат …
Разберите его, чтобы получить 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);
Вычесть временные метки ( time()
дает текущее время):
$diff = time() - $prev_ts;
Разделите на 60*60*24
секунды, чтобы получить разницу в днях:
$diff = floor($diff / (60*60*24)); // or round(), ceil() whatever fits best
При этом, если возможно, попробуйте сохранить или получить дату не как 20101202115755
а как 20101202115755
метку UNIX. Тогда вам не придется перебирать хлопоты.
Рабочий ДЕМО