我的时间为5:4 pm
,我想在PHP中将时间从上午/下午转换为24小时格式,我尝试date('H:i',strtotime('5:4 pm'))
,但这不起作用,结果是{{1如果它应该是16:00
。我该怎么办?
DEMO: http://sandbox.onlinephpfunctions.com/code/bfd524f65ea4fa3031e55c9879aab711f31e1b37
我无法改变这段时间。
答案 0 :(得分:1)
我推荐PHP OOP方式,因为它们总是比任何程序方式更好(比如使用strtotime
):
$time = '5:04 pm';
$date = DateTime::createFromFormat('g:i a', $time);
echo $date->format('H:i');//17:04
请注意,您需要提供:下午5:04 ,不能使用 5:4 pm 。
原因是没有前导零的分钟数不存在日期格式。
供参考,请参阅: http://php.net/manual/en/datetime.createfromformat.php
如果你必须有那种格式的时间,那么你将需要在收到你的时间之后操纵它,如下所示:
$time = '5:4 pm';//works for formats -> '5:4 pm' gives 17:04,'5:40 pm' gives 17:40
$time2 = str_replace(' ',':',$time);
$time3 = explode(':',$time2);
if(((int)$time3[1])<10)//check if minutes as over 10 or under 10 and change $time accordingly
$time = $time3[0].':0'.$time3[1].' '.$time3[2];
else
$time = $time3[0].':'.$time3[1].' '.$time3[2];
$date = DateTime::createFromFormat('g:i a', $time);
echo $date->format('H:i');
我希望它有所帮助
答案 1 :(得分:0)
尝试将AM / PM资本化
date('H:i', strtotime('5:04 PM'))
<强> {EDIT} 强>
使用str_replace
echo date('H:i', strtotime(str_replace("pm","PM",'5:04 PM')))
答案 2 :(得分:0)
你应该通过下午5:04而不是下午5:4,参数似乎需要2分钟的分钟格式。
工作示例:http://sandbox.onlinephpfunctions.com/code/ecf968c844da50e8a9eec2dc85656f49d7d20dee
答案 3 :(得分:0)
你可以试试这个
<section class="container">
<div class="flexgrid">
<figure class="col">
<!-- change <p> to <div> to avoid newline -->
<div>PLAY</div>
<center>
<img src="img/m1.jpg" />
</center>
</figure>
<figure class="col">
<div>LEARN</div>
<center>
<img src="img/m2.jpg" />
</center>
</figure>
<figure class="col">
<div>HELP</div>
<center>
<img src="img/m3.jpg" />
</center>
</figure>
</div>
</section>
答案 4 :(得分:0)
这是代码,
$time = '5:4 pm';
$arr = explode(" ",$time);
$arr1 = explode(":",$arr[0]);
foreach($arr1 as $k => $val){
$arr1[$k] = sprintf("%02d", $val);
}
$str = implode(":", $arr1)." ".$arr[1];
echo date('H:i',strtotime($str));
纯粹的约会不会起作用,所以我正在爆炸它,因为它是特殊情况
我希望这会奏效。 谢谢:))
答案 5 :(得分:0)
假设时间字符串格式相同 -
$time = explode(' ', '5:4 pm');
$temp = date_parse($time[0]);
$temp['minute'] = str_pad($temp['minute'], 2, '0', STR_PAD_LEFT);
echo date('H:i a', strtotime($temp['hour'] . ':' . $temp['minute'] . ' ' . $time[1]));
<强>输出强>
17:04 pm
答案 6 :(得分:-1)
// 24 hours format
$date = date("H:i a",time());
// just pass time() function instead of strtotime()
echo $date;
// output
// 17:04 pm
// to run a test, do reset your system time back or forward to 5:4 pm
谢谢,希望这有帮助。