在 PHP 中将 30 分钟添加到格式为 H:i 的时间

2022-08-30 11:06:08

此刻做噩梦,只是不明白为什么它不起作用

我有一个H:i(即10:00,13:30)等形式的值,称为$time

我想做的是创建两个新值,$startTime$time前30分钟,$endTime$time

我已经尝试了以下方法,但似乎不想工作

$startTime = date("H:i",strtotime('-30 minutes',$time));
$endTime = date("H:i",strtotime('+30 minutes',$time));

如果我以$time通过10:00,并回声$startTime和$endTime,我得到:

$startTime = 00:30
$startTime = 01:30        

答案 1
$time = strtotime('10:00');
$startTime = date("H:i", strtotime('-30 minutes', $time));
$endTime = date("H:i", strtotime('+30 minutes', $time));

答案 2

为了使它起作用,必须是时间戳。你不能通过“10:00”或类似的东西,你似乎在做什么,因为这样我也会得到0:30和1:30作为结果。$time$time = date('H:i', '10:00');

尝试

$time = strtotime('10:00');

作为替代方案,请考虑使用DateTime(尽管下面需要PHP 5.3):

$dt = DateTime::createFromFormat('H:i', '10:00'); // create today 10 o'clock
$dt->sub(new DateInterval('PT30M'));              // substract 30 minutes
echo $dt->format('H:i');                          // echo modified time
$dt->add(new DateInterval('PT1H'));               // add 1 hour
echo $dt->format('H:i');                          // echo modified time

或程序,如果你不喜欢OOP

$dateTime = date_create_from_format('H:i', '10:00');
date_sub($dateTime, date_interval_create_from_date_string('30 minutes'));
echo date_format($dateTime, 'H:i');
date_add($dateTime, date_interval_create_from_date_string('1 hour'));
echo date_format($dateTime, 'H:i');

推荐