DateTime是
PHP中的一个很棒的功能
$string = '1/1/2016 11.00PM';
$date = new DateTime($string);
$interval = new DateInterval('PT6H');
$date->add($interval);
// Now add another 6 hours while we are between 12:00 AM and 6:00 AM
while($date->format('G') >= 0 && $date->format('G') <= 6)
{
$date->add($interval);
}
echo $date->format('H:i:s M-j-Y');
这输出所需的
11:00:00 Jan-2-2016
更新
在我们广泛了解这条特定代码的逻辑之后,我们得出结论,午夜到早上6点之间完成的任何交易都应该从早上6点开始增加6小时(所以,基本上,设置为正午).
每个其他交易通常会增加6个小时.但是如果在加上那6个小时之后,时间间隔在午夜和早上6点之间,那么只有初始和午夜之间的相应时间量和其余时间应该加到早上6点,这基本上只是增加了12个小时到初始值.
所以这是修改后的代码:
$date = new DateTime($string);
$interval = new DateInterval('PT6H');
if($date->format('G') >= 0 && $date->format('G') <= 6)
{
$date->setTime(12,0,0);
}
else
{
$date->add($interval);
if($date->format('G') >= 0 && $date->format('G') <= 6)
{
$date->add($interval);
}
}
echo $date->format('H:i:s M-j-Y');
示例#1
// input
$string = '1/1/2016 3.00AM';
//output
12:00:00 Jan-1-2016 // this is midday
例#2
// input
$string = '1/1/2016 11.00AM';
//output
17:00:00 Jan-1-2016 // this is 5:00 PM
例#3
// input
$string = '1/1/2016 11.00PM';
//output
11:00:00 Jan-2-2016 // this is 11:00 AM