2017-08-29 3 views
-2

取得するパラメータによって変更される日付オブジェクトを作成する必要があります。 もし私が7日かかるとすれば、1週間前に私にかかるでしょう。日付操作PHP

ここに私のコードです。日付を正しくフォーマットするにはどうすればよいですか?

public function get_time_get($myear=0,$mmonth=0,$mday=0,$mhour=0,$mminute=0,$msecond=0){ 
    $year=date('y') +$myear; 
    $month=date('m')+$mmonth; 
    $day = date('d')+$mday; 
    $hour= date('H'+$mhour); // there is a bug 
    $minute = date('i')+$mminute; 
    $seconds= date('s')+$msecond; 

    $date=mktime($year,$month,$day,$hour,$minute,$seconds); 
    $t =date("Y-m-d H:i:s", $date); 
    debug($date); 

} 

あなたは、私は時間を取得しようとすることを確認することができますが、私はこれを取得:正しくありません2021年11月30日17時08分29秒 を

+0

関数をどのように呼び出すか、どの出力が期待どおりになるかを示すことができますか? '$ date-> modify( '+ 2 hours');' http://php.net/manual/en/datetime.modify.php 'のようなものをやることを許可する 'DateTime'オブジェクトを使うことをお勧めします – Giedrius

+1

['mktime()'](http://php.net/manual/en/function.mktime.php)のドキュメンテーションを見てください(それはあなたとは異なる順序で日付と時刻のコンポーネントを期待しています)。完全に忘れてください。 ['DateTime'](http://php.net/manual/en/class.datetime.php)クラスとその友達を使ってみてください。彼らは古い 'mktime()'/'date()'のペアよりも使いやすく、同じ結果を生み出し、複数のタイムゾーンで作業することができます(古いdate&time関数はタイムゾーンまたはデフォルトのものだけを使用します)。 – axiac

答えて

1

あなたは書きました:

$hour= date('H'+$mhour); 

しかし、それは次のようになります。

$hour = date('H') + $mhour; 

$mhourは、日付関数の外でなければなりません。