我需要找到date("YmdHis")
value.let的日差,说一个值是:
$previous_date='20101202115755';
$current_date= date("YmdHis");
$day_difference=?????
现在我需要找到两个值之间唯一的一天差异。他们是否有任何善良的心可以帮助我找到价值?
答案 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)
你有一种奇怪的格式......
解析它以获得UNIX timestamp 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
而是UNIX时间戳。然后你不必经历转换麻烦。
答案 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;
?>