获取日期返回零之间的差异

时间:2017-10-05 08:42:39

标签: php datetime

我在'Y-m-d H:i:s'中有一个日期时间,我试图用定义的日期+1天减去现在的日期以获得以小时,分钟和秒为单位的剩余时间:

$time = '2017-10-05 14:54:03';
$now =  date('Y-m-d H:i:s');
$endTransaction = date('Y-m-d H:i:s', strtotime($time. ' + 1 day'));
$dteDiff  = $endTransaction - $now;
echo $dteDiff;

但我总是得到0

4 个答案:

答案 0 :(得分:1)

您可能需要使用此date_diff

    $time = '2017-10-05 14:54:03';
    $now =  date_create(date('Y-m-d H:i:s'));
    $endTransaction = date_create(date('Y-m-d H:i:s', strtotime($time. ' + 1 day')));
    $dteDiff  = date_diff($now, $endTransaction);
    $date = new DateTime($dteDiff);

    $result = $date->format('Y-m-d H:i:s');

答案 1 :(得分:1)

你做错了。 date函数返回字符串,因此PHP无法比较任何内容。请尝试使用DateTime课程。它的diff方法返回带有一些公共属性的DateInterval对象,比如days属性,这是两个日期之间天数的正整数(向下舍入):

$now = new \DateTime();
$endTransaction = (new \DateTime('2017-12-05 14:54:03'))->modify('+1 day');

$diff = $endTransaction->diff($now);

printf(
    'Difference in days: %d, hours: %d, minutes: %d, seconds: %d',
     $diff->days,
     $diff->h,
     $diff->m,
     $diff->s
);

答案 2 :(得分:0)

根据上述说明,请尝试执行以下代码段作为解决方案。

    $time = '2017-10-05 14:54:03';
    $now =  strtotime(date('Y-m-d H:i:s'));
    $endTransaction = strtotime(date('Y-m-d H:i:s', strtotime($time. ' + 1 day')));
    $dteDiff  = ($endTransaction - $now)/(24*60*60);
    echo round($dteDiff);

答案 3 :(得分:0)

$endTransaction$now是字符串。

$time = '2017-10-05 14:54:03';
$now =  date('Y-m-d H:i:s');
$endTransaction = date('Y-m-d H:i:s', strtotime($time. ' + 1 day'));
echo($endTransaction."\n");
echo($now."\n");

It prints:

2017-10-06 14:54:03
2017-10-05 11:45:39

减法不是字符串的有效操作。它只能处理数字。上面的字符串是converted to numbers。转换仅使用字符串中最左边的数字,直到它到达第一个不是数字的字符。

上面的两个字符串在转换为数字时会生成2017,当然它们的差异是0

在PHP中使用日期的最简单方法是使用DateTime及其相关类。

// Convert the input string to a DateTime object
$then = new DateTime('2017-10-05 14:54:03');
// Add 1 day
$then->add(new DateInterval('P1D'));
// Get the current date and time
$now  = new DateTime('now');
// Compute the difference; it is a DateInterval object
$diff = $now->diff($then);

// Display the dates and the difference
echo('Then: '.$then->format("Y-m-d H:i:s\n"));
echo('Now : '.$now->format("Y-m-d H:i:s\n"));
echo('Remaining: '.$diff->format("%R%a days, %h hours, %i minutes, %s seconds.\n"));

输出:

Then: 2017-10-06 14:54:03
Now : 2017-10-05 12:36:25
Remaining: +1 days, 2 hours, 17 minutes, 38 seconds.