83

我目前有 php 返回当前日期/时间,如下所示:

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

我想做的是有一个新变量$new_timeequal $now + $hours,其中$hours的小时数从 24 到 800 不等。

有什么建议么?

4

14 回答 14

127

你可以使用类似strtotime()函数的东西来为当前时间戳添加一些东西。$new_time = date("Y-m-d H:i:s", strtotime('+5 hours')).

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

于 2012-07-08T20:14:44.650 回答
48

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

例子:

<?php

$now = new DateTime(); //now
echo $now->format('Y-m-d H:i:s'); // 2021-09-11 01:01:55

$hours = 36; // hours amount (integer) you want to add
$modified = (clone $now)->add(new DateInterval("PT{$hours}H")); // use clone to avoid modification of $now object
echo "\n". $modified->format('Y-m-d H:i:s'); // 2021-09-12 13:01:55

运行脚本


于 2014-04-16T08:23:26.353 回答
22

您可以使用 strtotime()来实现这一点:

$new_time = date("Y-m-d H:i:s", strtotime('+3 hours', $now)); // $now + 3 hours
于 2012-07-08T20:14:56.007 回答
11

正确的

您可以使用 strtotime() 来实现这一点:

$new_time = date("Y-m-d H:i:s", strtotime('+3 hours', strtotime($now))); // $now + 3 hours
于 2016-10-18T23:51:18.127 回答
6

您还可以使用 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";
于 2012-07-08T20:16:32.270 回答
5

嗯......你的分钟应该更正......'i'是分钟。不是几个月。:) (我也有同样的问题。

$now = date("Y-m-d H:i:s");
$new_time = date("Y-m-d H:i:s", strtotime('+3 hours', $now)); // $now + 3 hours
于 2013-07-30T08:42:53.180 回答
4

我用这个,它的工作很酷。

//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)));
于 2019-02-05T10:33:18.100 回答
1

您可以尝试 lib Ouzo goodies,并以流利的方式执行此操作:

echo Clock::now()->plusHours($hours)->format("Y-m-d H:m:s");

API 允许多种操作。

于 2015-08-25T06:22:21.380 回答
1

对于给定的 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

于 2020-06-12T09:16:53.973 回答
1

为“现在”增加 2 小时

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

或者

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

或者

$now = new DateTime();

$now->add(new DateInterval('PT2H')); // as above in example
于 2020-07-13T14:42:10.803 回答
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()函数的组合可以解决问题。

于 2018-04-11T08:08:35.063 回答
0

我喜欢那些内置的 php 日期表达式,例如+1 hour,但由于某种原因,它们一直在我脑海中浮现。此外,我所知道的所有 IDE 都没有为这类东西提供自动完成功能。最后,虽然处理这些strtotimedate功能并不是什么火箭科学,但每次我需要它们时,我都必须在谷歌上搜索它们的用法。

这就是为什么我喜欢消除(至少减轻)这些问题的解决方案。以下是向日期添加x小时数的方式:

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

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

此示例使用蛋白酥皮库,您可以在此处查看更多示例。

于 2020-05-16T07:59:37.430 回答
0

$to = date('Y-m-d H:i:s'); //"2022-01-09 12:55:46"

$from = date("Y-m-d H:i:s", strtotime("$to -3 hours")); // 2022-01-09 09:55:46

于 2022-01-09T12:56:53.750 回答
-2
   $now = date("Y-m-d H:i:s");
   date("Y-m-d H:i:s", strtotime("+1 hours $now"));
于 2018-06-12T10:09:59.427 回答