2017-08-29 126 views
-2

我需要創建一個日期對象,將由我得到的參數進行更改。 如果我會得到-7天,這將需要我一個星期前。日期操作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

你能告訴我們你是如何調用函數的嗎?我會建議使用'DateTime'對象,它可以簡單地讓你做'$ date-> modify('+ 2 hours');'http://php.net/manual/en/datetime.modify.php – Giedrius

+1

查看['mktime()'](http://php.net/manual/en/function.mktime.php)的文檔(它期望日期和時間組件的排列順序與您想象的不同),然後完全忘記它。嘗試使用['DateTime'](http://php.net/manual/en/class.datetime.php)類及其朋友。它們比舊的'mktime()'/'date()'對更容易使用,它們產生相同的結果,它們可以使用多個時區(而舊的日期和時間函數或者不知道關於時區的任何信息或者他們只使用默認的)。 – axiac

回答

1

您寫道:

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

但它應該是:

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

$mhour應該是日期功能之外。