2017-08-29 74 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应该是日期功能之外。