此刻有一场噩梦,只是看不出为什么它不起作用
我有一个H:i(即10:00,13:30)等形式的值,称为$ time
我想要做的是创建两个新值,$ startTime在$ time之前30分钟,$ endTime在$ time之后30分钟
我尝试过以下但似乎并不想工作
$startTime = date("H:i",strtotime('-30 minutes',$time));
$endTime = date("H:i",strtotime('+30 minutes',$time));
Run Code Online (Sandbox Code Playgroud)
如果我通过10:00作为$ time并且同时回显$ startTime和$ endTime,我得到:
$startTime = 00:30
$startTime = 01:30
Run Code Online (Sandbox Code Playgroud)
web*_*ave 89
$time = strtotime('10:00');
$startTime = date("H:i", strtotime('-30 minutes', $time));
$endTime = date("H:i", strtotime('+30 minutes', $time));
Run Code Online (Sandbox Code Playgroud)
Gor*_*don 10
为了使工作$time
必须是时间戳.你不能通过"10:00"或类似$time = date('H:i', '10:00');
你喜欢的事情,因为那时我也得到0:30和1:30的结果.
尝试
$time = strtotime('10:00');
Run Code Online (Sandbox Code Playgroud)
作为替代方案,请考虑使用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
Run Code Online (Sandbox Code Playgroud)
或者如果你不喜欢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');
Run Code Online (Sandbox Code Playgroud)
我通常采取稍微不同的方式来实现这一点:
$startTime = date("H:i",time() - 1800);
$endTime = date("H:i",time() + 1800);
Run Code Online (Sandbox Code Playgroud)
其中 1800 秒 = 30 分钟。
归档时间: |
|
查看次数: |
128828 次 |
最近记录: |