如何获取日期并为其添加“x”小时

时间:2017-04-13 12:49:40

标签: php date time date-arithmetic

我的页面上有一个申请表,在某个日期关闭。然而,它恰好在特定日期(即4月13日)的时间结束时关闭,但我希望它例如在4月13日14:00关闭。我在我的WordPress(add_time)中创建了一个下拉列表,输出字符串为14:00。如何将其添加到日期中,以便$ daysleft包括那些添加的小时数?

有点像?

$addedTime = get_field('add_time');
$addedTime = strtotime ($addedTime);
$daysleft = floor($datediff/(60*60*24)+$addedtime)) +1 <--- (not sure where to one is for)

如果目前的完整代码是

<?php
    $now = time();
    $dueDate = get_field('due_date');
    $addedTime = get_field('add_time');
    $dueDate = strtotime($dueDate);
    $datediff = $dueDate - $now;
    $daysLeft = floor($datediff/(60*60*24))+1;
    $daysLeft = intval($daysLeft);
 ?>
 <?php 
    if($daysLeft == 0) {
        echo 'Last day';
    } elseif($daysLeft < 0) {
        echo 'Deadline passed';
    } elseif($daysLeft == 1) {
        echo $daysLeft.' days left';
    } else {
        echo $daysLeft.' days left';
    }
 ?>

2 个答案:

答案 0 :(得分:1)

我首先建议使用Carbon但您也可以使用标准DateTime对象。

<强>日期时间

$date = new DateTime('20-04-2017');
$date->add(new DateInterval('P1D'));
echo $date->format('d-m-Y');

<强>碳

use Carbon\Carbon;

$date = new Carbon::createFromFormat('d-m-Y','20-04-2017');
$nextDay = $date->addDay();
echo $nextDay->format('d-M-Y');

现在,对于您的申请,我将以下列方式使用Carbon:

$enddate = Carbon::createFromFormat('d-m-Y H:i:s','14-04-2017 14:00:00');
if(Carbon::now()->gte($enddate)) {
   //Application ended code
}
else {
   // application active code
}

如果您想使用DateTime,您可以这样做:

$enddate = new DateTime('2017-04-13 13:00:00');
$now = new DateTime('now');

$diff = $enddate->getTimestamp() - $now->getTimestamp();

if($diff >= 0) {
    echo 'active';
}
else {
    echo 'inactive';
}

答案 1 :(得分:0)

对于具有日期和时间的操作,最好使用DateTime class

要在1小时内收到时间,您可以使用以下代码:

$time = new DateTime();
$time->modify("+1 hour");
echo $time->format("Y-m-d H:i:s");

通过该课程,您还可以与日期进行比较