我目前有 php 返回当前日期/时间,如下所示:
$now = date("Y-m-d H:m:s");
我想做的是有一个新变量$new_time
equal $now + $hours
,其中$hours
的小时数从 24 到 800 不等。
有什么建议么?
你可以使用类似strtotime()
函数的东西来为当前时间戳添加一些东西。$new_time = date("Y-m-d H:i:s", strtotime('+5 hours'))
.
如果您需要函数中的变量,则必须使用双引号然后 like strtotime("+{$hours} hours")
,但最好使用strtotime(sprintf("+%d hours", $hours))
这样。
另一个解决方案(面向对象)是使用 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
您可以使用 strtotime()来实现这一点:
$new_time = date("Y-m-d H:i:s", strtotime('+3 hours', $now)); // $now + 3 hours
正确的
您可以使用 strtotime() 来实现这一点:
$new_time = date("Y-m-d H:i:s", strtotime('+3 hours', strtotime($now))); // $now + 3 hours
您还可以使用 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";
嗯......你的分钟应该更正......'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
我用这个,它的工作很酷。
//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)));
您可以尝试 lib Ouzo goodies,并以流利的方式执行此操作:
echo Clock::now()->plusHours($hours)->format("Y-m-d H:m:s");
API 允许多种操作。
对于给定的 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
为“现在”增加 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
$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()函数的组合可以解决问题。
我喜欢那些内置的 php 日期表达式,例如+1 hour
,但由于某种原因,它们一直在我脑海中浮现。此外,我所知道的所有 IDE 都没有为这类东西提供自动完成功能。最后,虽然处理这些strtotime
和date
功能并不是什么火箭科学,但每次我需要它们时,我都必须在谷歌上搜索它们的用法。
这就是为什么我喜欢消除(至少减轻)这些问题的解决方案。以下是向日期添加x
小时数的方式:
(new Future(
new DateTimeFromISO8601String('2014-11-21T06:04:31.321987+00:00'),
new NHours($x)
))
->value();
作为一个不错的奖励,您不必担心格式化结果值,它已经是 ISO8601 格式。
此示例使用蛋白酥皮库,您可以在此处查看更多示例。
$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
$now = date("Y-m-d H:i:s");
date("Y-m-d H:i:s", strtotime("+1 hours $now"));