添加“x”小时数

我目前有PHP获取当前时间/date如此:

$now = date("Ymd H:m:s"); 

id喜欢做的是有一个新的variables$new_time等于$now + $hours$hours是24-800的小时数。

有什么build议么?

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

如果你需要函数中的variables,那么你必须使用双引号,然后像strtotime("+{$hours} hours") ,但是更好的是使用strtotime(sprintf("+%d hours", $hours))

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

例:

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

PHP文档 。

你可以使用strtotime()来达到这个目的:

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

正确

你可以使用strtotime()来达到这个目的:

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

呃…你的分钟应该纠正…'我'是分钟。 不是几个月。 :)(我也有同样的问题。

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

你也可以使用unix风格的时间来计算:

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

你可以尝试lib Ouzo的好东西 ,并以stream利的方式做到这一点:

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

API允许多个操作。

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

 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('Ymd H:i',strtotime('+12 hour',strtotime($datetimesql))); } elseif ($ampm == 'am') { $hours = substr(trim($datetimesql), -5, 2); if($hours == '12') $datetimesql = date('Ymd H:i',strtotime('-12 hour',strtotime($datetimesql))); } return $datetimesql; } 

它转换date时间值,

 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 

希望这会帮助别人。