- 締切済み
朝5時を29時と表示したい
MYSQLかPHPで朝5時を29時と表示を変更したいとと思っています。 朝5時から翌日朝4時59分までを1日としたいので、 たとえば、3月3日朝5時から翌日の3月4日朝4時59分までを3月3日と計算したいと思っています。 何かよい方法はございますでしょうか。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- honoka69
- ベストアンサー率50% (6/12)
No.4の方のご回答を受けて時間のずれが無いものに修正しておきます。 すべてに適用しないと時間のずれが生じる可能性がありましたね。 すいません。 <?php //時間を5時間ずらす $changeTime = 5; $timeStamp = time(); $m = intval ( date ( "m" , $timeStamp - ( 60 * 60 * $changeTime ) ) ); $d = intval ( date ( "d" , $timeStamp - ( 60 * 60 * $changeTime ) ) ); $h = intval ( date ( "H" ) , $timeStamp ); $i = intval ( date ( "i" ) , $timeStamp ); if ( $h <= 5 ) { $h+= 24; } //画面出力 print $m.'月'.$d.'日'.$h.'時'.$i.'分'; ?>
- dell_OK
- ベストアンサー率13% (766/5721)
No.3のご回答にある時差(日付変更時刻)調整をする方法を、私はおすすめします。 No.3のご回答を一部変更した方がいいかも知れません。 $time = time (); $m = intval ( date ( "m" , $time - ( 60 * 60 * $changeTime ) ) ); $d = intval ( date ( "d" , $time - ( 60 * 60 * $changeTime ) ) ); time()の取得が2回行われているので、このタイミングで秒が進み取得した日時に誤差が出て、$mと$dに不一致が発生するような気がするので。
- honoka69
- ベストアンサー率50% (6/12)
こんな感じでどうでしょうか? 細かい所は調節してください。 <?php //時間を5時間ずらす $changeTime = 5; $m = intval ( date ( "m" , time () - ( 60 * 60 * $changeTime ) ) ); $d = intval ( date ( "d" , time () - ( 60 * 60 * $changeTime ) ) ); $h = intval ( date ( "H" ) ); $i = intval ( date ( "i" ) ); if ( $h <= 5 ) { $h+= 24; } //画面出力 print $m.'月'.$d.'日'.$h.'時'.$i.'分'; ?>
- memphis
- ベストアンサー率40% (975/2395)
0~4時の間だけ時間を+24して、日付を前日にするだけでは?
一生懸命考えて改良してください。 私は要りません。
お礼
みなさまご教授ありがとうございます。 時を24進数を10進数、分を60進数を10進数へ変換したあとに 計算する関数と、表示用の関数を複数つくりました。 若干、計算結果に誤差がでますが、丸める桁数などを調整し 動作に問題なく動いております。 ありがとうございました。