PHP仅调用字符串项的一部分

阿什顿休闲

所以我还没有学过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;
}

我究竟做错了什么?

用户3783243

您的代码有两个问题,=是一个分配。您需要进行==比较(或者===也可以检查类型)。

第二个问题是substr该函数将要开始的位置作为参数1,将要前进的字符数作为2。因此,在两个示例中,第二个参数都应为2。

$hours = substr($time, 0, 2);
$minutes = substr($time, 2, 2);

您还可以将其转换为int0如果前导字小于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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章