$t = DateTime::createFromFormat('Gi', '900');
$time_str = $t->format('gi a');
echo $time_str; //outputs 600 pm instead of 9am. Why? and How do I get 9am?
を働いていません!PHPの日付フォーマットは、私が間違っている..私は日付フォーマットの観点から、ここで与えられているものを、次の午前つもりですどこがわからない
$t = DateTime::createFromFormat('Gi', '900');
$time_str = $t->format('gi a');
echo $time_str; //outputs 600 pm instead of 9am. Why? and How do I get 9am?
を働いていません!PHPの日付フォーマットは、私が間違っている..私は日付フォーマットの観点から、ここで与えられているものを、次の午前つもりですどこがわからない
リンクしたドキュメントはdate()
の機能です。 DateTime::createFromFormat
は同じではありません(ただし、フォーマット文字列はほとんど同じです)。
フォーマット解析で、時と分のコンポーネントの違いを認識できない場合があります。あなたがスペースでそれらを分割した場合
は、あなたが希望する結果を得る:
$t = DateTime::createFromFormat('G i', '9 00');
$time_str = $t->format('gi a');
echo $time_str;
// Output is 900 am
編集:Gi
のようなフォーマット文字列がknown bugで解析するPHP用
ことができません。 G
のパーサは、9
または90
のどちらを読み込むかを知らず、後者の場合は90
が高すぎます。私は私のコメントで述べたよう
ああありがとう!それは助ける!これは、時間を素早く計算するためです(配列インデックスとして使用する必要があるため)、それらを数値[0〜2359]として保存しています。だから、印刷のためにam/pmに変換する最善の方法は、時間と分に分割して、12などを減算することでしょうか? – crazyphoton
時間文字列に先行ゼロを埋め込むと、それを正しく解析するようです。 '0900' = 900 amしかし、am/pmを使用した場合、標準フォーマットであるので、出力時間の時間と分の間にコロンを入れることを強く検討します。 – JYelton
はい、そうです。しかし、01000は失敗します。手動で行うほうが簡単でした:) – crazyphoton
これは動作します:
$t = DateTime::createFromFormat('G i', '9 00');
$time_str = $t->format('gi a');
echo $time_str.PHP_EOL;
書き留めどこいずれかを見つけることができません - のいずれかのスペースまたはコロンまたは何か他の
それは完璧な意味合いがあります。いい答えだ! ;) –
ありがとう!私はバグへのリンクのために他の答えを受け入れました:) – crazyphoton
をすることによって...しかし、時間は分離する必要が疑いなし理由はわかりましたが、これは動作します> 'DateTime :: createFromFormat( 'G i'、 '9 00');'私は時間が何らかの方法で分離されている必要があると思います – ManseUK