添加'x'到目前为止的小时数

时间:2012-07-08 20:11:58

标签: php datetime date dateadd

我目前有php获取当前时间/日期,如下:

$now = date("Y-m-d H:m:s");

ID喜欢做的是新变量$new_time等于$now + $hours$hours是一个小时数,范围从24到800。

有什么建议吗?

13 个答案:

答案 0 :(得分:96)

您可以使用strtotime()函数之类的内容向当前时间戳添加内容。 $new_time = date("Y-m-d H:i:s", strtotime('+5 hours'))

如果您需要函数中的变量,则必须使用双引号,然后使用strtotime("+{$hours} hours"),但最好使用strtotime(sprintf("+%d hours", $hours))

答案 1 :(得分:32)

另一个解决方案(面向对象)是使用DateTime :: add

示例:

$now = new DateTime(); //current date/time
$now->add(new DateInterval("PT{$hours}H"));
$new_time = $now->format('Y-m-d H:i:s');

PHP documentation

答案 2 :(得分:18)

您可以使用strtotime()来实现此目标:

$new_time = date("Y-m-d H:i:s", strtotime('+3 hours', $now)); // $now + 3 hours

答案 3 :(得分:9)

<强>正确

您可以使用strtotime()来实现此目的:

$new_time = date("Y-m-d H:i:s", strtotime('+3 hours', strtotime($now))); // $now + 3 hours

答案 4 :(得分:4)

您还可以使用unix样式时间来计算:

$newtime = time() + ($hours * 60 * 60); // hours; 60 mins; 60secs
echo 'Now:       '. date('Y-m-d') ."\n";
echo 'Next Week: '. date('Y-m-d', $newtime) ."\n";

答案 5 :(得分:4)

嗯......你的会议记录应该得到纠正......&#39;我&#39;是几分钟。不是几个月。 :)(我也有同样的问题。

$now = date("Y-m-d H:i:s");
$new_time = date("Y-m-d H:i:s", strtotime('+3 hours', $now)); // $now + 3 hours

答案 6 :(得分:0)

我使用以下函数将正常的日期时间值转换为mysql日期时间格式。

private function ampmtosql($ampmdate) {
            if($ampmdate == '')
                return '';
            $ampm = substr(trim(($ampmdate)), -2);
            $datetimesql = substr(trim(($ampmdate)), 0, -3);
            if ($ampm == 'pm') {
                $hours = substr(trim($datetimesql), -5, 2);
                if($hours != '12')
                    $datetimesql = date('Y-m-d H:i',strtotime('+12 hour',strtotime($datetimesql)));
            }
            elseif ($ampm == 'am') {
                $hours = substr(trim($datetimesql), -5, 2);
                if($hours == '12')
                    $datetimesql = date('Y-m-d H:i',strtotime('-12 hour',strtotime($datetimesql)));
            }
            return $datetimesql;
        }

它会转换日期时间值,例如

2015-06-04 09:55 AM -> 2015-06-04 09:55
2015-06-04 03:55 PM -> 2015-06-04 15:55
2015-06-04 12:30 AM -> 2015-06-04 00:55

希望这会对某人有所帮助。

答案 7 :(得分:0)

$date_to_be-added="2018-04-11 10:04:46";
$added_date=date("Y-m-d H:i:s",strtotime('+24 hours', strtotime($date_to_be)));

date()strtotime()函数的组合将起到作用。

答案 8 :(得分:0)

我使用它,它的工作很酷。

//set timezone
date_default_timezone_set('GMT');

//set an date and time to work with
$start = '2014-06-01 14:00:00';

//display the converted time
echo date('Y-m-d H:i',strtotime('+1 hour +20 minutes',strtotime($start)));

答案 9 :(得分:0)

我喜欢诸如+1 hour之类的内置php日期表达式,但是由于某些原因,它们始终不知所措。此外,据我所知,没有一个IDE建议使用自动完成功能。而且,最后,尽管与那些strtotimedate函数玩杂耍并不是火箭科学,但我每次需要时都必须用Google搜索它们的用法。

这就是为什么我喜欢消除(至少缓解)这些问题的解决方案。将日期添加x小时的样子如下:

(new Future(
    new DateTimeFromISO8601String('2014-11-21T06:04:31.321987+00:00'),
    new NHours($x)
))
    ->value();

作为一个不错的选择,您不必担心格式化结果值,它已经是ISO8601格式。

此示例使用了蛋白酥皮库,您可以查看更多示例here

答案 10 :(得分:0)

对于给定的DateTime,您可以添加天,小时,分钟等。下面是一些示例:

$now = new \DateTime();

$now->add(new DateInterval('PT24H')); // adds 24 hours

$now->add(new DateInterval('P2D')); // adds 2 days

PHP:DateTime :: add-手册https://www.php.net/manual/fr/datetime.add.php

答案 11 :(得分:-1)

在“现在”添加2个小时

fun readAsset(context: Context, fileName: String): String =
    context
        .assets
        .open(fileName)
        .bufferedReader()
        .use(BufferedReader::readText)

$date = new DateTime('now +2 hours');

$date = date("Y-m-d H:i:s", strtotime('+2 hours', $now)); // as above in example

答案 12 :(得分:-2)

   $now = date("Y-m-d H:i:s");
   date("Y-m-d H:i:s", strtotime("+1 hours $now"));