添加“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
希望这会帮助别人。