2013-03-31 3 views
0

Как вывести значение, подобное 2.30? В настоящее время я получаю 2.3. Ниже мой код, где формат времени 24 ч будет преобразован в формат 12 ч:PHP-выход с десятичной точностью

if($openHrs['open_hours'] == NULL){ 

} else { 
    $openHrs = explode(",", $openHrs['open_hours']); 

    $weekdays = array('Sun','Mon','Tue','Wed','Thu','Fri','Sat'); 
    $res  = array(); 

    $todayWeekDay = date('D'); // get today's weekday 

    $todayWeekNum = array_search($todayWeekDay, $weekdays); // get number for today's weekday 

    foreach($openHrs as &$temp) { 

     $temp = explode(" ", $temp); 

     $temp[1] = $temp[1] > 12 ? $temp[1] - 12 . ' pm' : $temp[1] . ' am'; 
     $temp[2] = $temp[2] > 12 ? $temp[2] - 12 . ' pm' : $temp[2] . ' am'; 
     // only add the item where the weekday is equal to today's 
     if ($temp[0] == $todayWeekNum) { 
      $res[] = $weekdays[$temp[0]] . ' ' . $temp[1] . ' - ' . $temp[2]; 
     } 
    } 
} 

Этот вопрос я получаю 2.3 вместо 2.30 в течение нескольких часов формата 14.30. Что мне здесь не хватает?

+1

try number_format –

ответ

2

Проблема заключается в том, что PHP обрабатывает ваше время как число с плавающей запятой!

Вы могли бы привести его в виде строки, или попытаться sprintf("%0.2f", $output_variable)

Это должно форматировать его с двумя десятичными знаками после запятой.

+0

Или, как говорит Анкур, используйте PHP '' 'number_format''', который может делать то же самое, что' '' sprintf''' здесь – JoLoCo

+0

hpw о 'am' и 'pm'? он не появился – d3bug3r

+0

Попробуйте использовать '' 'sprintf''' только вокруг части номера ($ temp [1] и $ temp [2] перед добавлением« am »или« pm »). – JoLoCo

2

Вы можете использовать number_format($your_number, 2, '.', '');, чтобы отобразить ваш номер до 2 знаков после запятой.

+0

Собирался набрать почти то же самое, что и выше. Взрыв. – qooplmao

+0

Извините @Qoop Actuallay, когда я начал отвечать на комментарий, не был добавлен. –

Смежные вопросы