所以我还没有学过PHP,但是通常会为我们的网站编写函数的家伙很忙。所以我试图用非常有限的知识来解决这个问题。我需要将4位数的军队时间(0800、0815、0830、0845、0900 ...)转换为标准时间(8:00 AM、8:15AM ...)。我写了一个方程式,但是它返回的所有时间都是12点,总是PM。这是我的方程式
function convert_army_to_regular($time) {
$hours = substr($time, 0, 1);
$minutes = substr($time, 2, 3);
if ($hours > 12) {
$hours = $hours - 12;
$ampm = 'PM';
} else if ($hours = 12) {
$ampm = 'PM';
} else {
if ($hours < 11){
$ampm = 'AM';
}
}
return $hours . ':' . $minutes . $ampm;
}
我究竟做错了什么?
您的代码有两个问题,=
是一个分配。您需要进行==
比较(或者===
也可以检查类型)。
第二个问题是substr
。该函数将要开始的位置作为参数1,将要前进的字符数作为2。因此,在两个示例中,第二个参数都应为2。
$hours = substr($time, 0, 2);
$minutes = substr($time, 2, 2);
您还可以将其转换为int
,0
如果前导字小于10 ,则会删除前导字。
$hours = (int)substr($time, 0, 2);
您也可以使用正则表达式执行此操作:
echo preg_replace_callback('/(\d{2})(\d{2})/', function($match) {
$hours = (int)$match[1];
$minutes = $match[2];
$median = 'AM';
if($hours > 12 ) {
$hours = $hours - 12;
$median = 'PM';
}
return $hours . ':' . $minutes . $median;
},'1800');
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句