将数字(0-23)转换为时间(AM/PM)格式


Convert numbers (0-23) into time (AM/PM) format in PHP

我有一个从0-23的数字数组,每个数字表示从午夜到晚上11点的时间。按键值降序排列

22 => int 8
3 => int 7
5 => int 6 

等。例如,如果数组的第一个元素的键值是22,我希望变量$first为"10PM"。

当然,我可以写:

if(key($array)=='22'){
    $first = '10PM';
}

但是我必须为每个键做23次……有更简单的方法吗?

代码

$hrs = 15;
echo date("h a", strtotime("00-00-00 $hrs:00:00"));
$array = array(
    22 => 8,
    3  => 7,
    5 => 6    
);
$i = 1;
foreach ($array $key=>$val)
{
    ${'time_' . $i} = date("HA", strtotime($key . ":00:00"));
    $i++;
}
//Now check echo $time_1;

您也可以将您的值传递给下面的函数:

<?php
$array = array(22 => 8, 3 => 7, 5 => 6);
foreach ($array as $key => $value) {
    echo numbers_to_time($key) . "<br>";
}
function numbers_to_time($number) {
    $number = intval($number);
    if ($number < 0 || $number > 23) {
        return "Number should be between 1 to 23";
    }

    if ($number == 0) {
        return "12AM";
    } elseif ($number == 12) {
        return $number . "PM";
    } elseif($number > 0 && $number < 12) {
        return $number ."AM";
    } elseif ($number > 12 && $number <= 23) {
        $temp = $number - 12;
        return $temp . "PM";
    }
}
?>

您可以使用下面的代码实现这一点。

$array = array(
   22 => 8,
   3  => 7,
   5 => 6    
);
foreach($array as $key => $val){    
   if(($key/12) <1 ){
       $time = $key."AM";
   } else if(($key/12) == 1 ){
         $time = "12"."PM";
   } else{
     $time = ($key%12)."PM"; 
   }
   echo $time;
}