2012-01-22 10 views
0

私はデジタル時計の形式で時刻を返すphp関数を作成しました。 My機能は、私が値(2時03分)、または任意の他に合格しようとしたとき、それは常にNULLを返しますデジタル時計の形式で時間を表示するphp関数

function get_hh_mm_ii($unsorted_time) { 
    //return $unsorted_time; 
    if ($unsorted_time == '00:00') { 
     return 'x'; 
    } elseif ($unsorted_time != '00:00') { 

     $time = explode(":", $unsorted_time); 
     $hh = $time[0]; 
     $mm = $time[1]; 

     //var_dump($hh/12); exit(); 

     if (($hh/12) == 0) { 
      $ii = 'am'; 

      return $hh . ':' . $mm . ' ' . $ii; 

     } elseif (($hh/12) == 1) { 
      $ii = 'pm'; 
      $hh = $hh % 12; 
      if ($hh == 0) { 
       $hh == 12; 
      } 
      return $hh . ':' . $mm . ' ' . $ii; 
     } 
    } 
} 

です。 var_dumpを使ってその値を調べました。

+1

その後、いくつかのデバッグを行います。それは間違っていますか? –

答えて

2

は、この方法を試してください。

function get_hh_mm_ii($unsorted_time) { 
    //return $unsorted_time; 
    if ($unsorted_time == '00:00') { 
     return 'x'; 
    } elseif ($unsorted_time != '00:00') { 

     $time = explode(":", $unsorted_time); 
     $hh = $time[0]; 
     $mm = $time[1]; 

     //var_dump($hh/12); exit(); 

     if ($hh < 12) { 
      $ii = 'am'; 

      return $hh . ':' . $mm . ' ' . $ii; 

     } else { 
      $ii = 'pm'; 
      $hh = $hh - 12; 
      if ($hh == 0) { 
       $hh == 12; 
      } 
      return $hh . ':' . $mm . ' ' . $ii; 
     } 
    } 
} 

問題は12を除く13と何か、12で割っが1ではないということです。

+0

'($ hh/12)== 0)'文は、変数/ 12が0の場合、つまり12より小さい値はこのチェックで0(除数)を与えることを示しています。 12以上のものは1(除数)を与える。私が実装した論理で正しいのでしょうか?私のコードは正しくありませんでしたが。 –

+1

@RahulSingh php> var_dump(07/12); float(0.58333333333333) php> var_dump((07/12)== 0); bool(false) – TimWolla

1

私はちょうどんでしょう:

function get_hh_mm_ii($unsorted_time) { 
    return date('g:i a', strtotime($unsorted_time)); 
} 
+0

それは ':'で区切られ、strtotimeのためにうまくいきます.. –

+1

これは質問か文であるかどうかは分かりませんが、 ':'で区切られた時間はstrtotimeに対してうまくいきます。 [strtotime](http://php.net/manual/en/function.strtotime.php) - 英語のテキスト形式の日時記述をUnixタイムスタンプに構文解析します。 – Herbert

0

たぶん私はこの問題を誤解だけど、strtotimedateを使用して組み合わせて、あなたが必要とするすべてであるべきはずです。

<?php 

function get_hh_mm_ii($unsorted_time) { 
     return date("G\:H A", strtotime($unsorted_time)); 
} 


print get_hh_mm_ii("9.21 pm") . PHP_EOL; 
print get_hh_mm_ii("9:30 AM") . PHP_EOL; 
print get_hh_mm_ii("02:03") . PHP_EOL; 

?> 

出力:

$ php timetest.php 
21:21 PM 
9:09 AM 
2:02 AM 
関連する問題