php date()diff()如何用零获取日期?

时间:2013-12-08 10:04:20

标签: php date diff datediff

得到 我使用代码:

$then = new DateTime(date('Y-m-d H:i:s', $seconds_end));
$now = new DateTime(date('Y-m-d H:i:s', time()));
$diff = $then->diff($now);

但在var_dump($diff);我看到了:

object(DateInterval)#4 (8) { 
                           ["y"]=> int(0) 
                           ["m"]=> int(0) 
                           ["d"]=> int(6) 
                           ["h"]=> int(2) 
                           ["i"]=> int(1) 
                           ["s"]=> int(17) 
                           ["invert"]=> int(1)
                           ["days"]=> int(6) 
                           }

请告诉我如何用{0}获取y,m,d,h,i,s,例如,$diff['h']将是'02'而不是'2'

3 个答案:

答案 0 :(得分:1)

只需使用DateInterval的“format”方法: http://php.net/manual/ru/dateinterval.format.php

例如:

$diff->format('%Y-%M-%D %H:%I:%S');

如果您只想获取其中一个属性,请使用sprintf或str_pad:

sprintf('%02d', $diff->d);

str_pad($$diff->d, 2, '0', STR_PAD_LEFT);

答案 1 :(得分:0)

如果字符串长度不为2,则可以检查字符串长度,然后添加0(零)字符串,如下所示

if(strlen($diff->h)==1) 
{
$new_hr='0'.$interval->h;   
}
echo $new_hr;

答案 2 :(得分:0)

你在这里犯了一些错误。您不需要对DateTime个对象使用date(),DateTime::createFromFormat()更适合您的用例。您的示例代码应如下所示: -

$then = DateTime::createFromFormat('Y-m-d H:i:s', $seconds_end);
$now = new DateTime(); // Defaults to current date & time
$diff = $then->diff($now);

然后您可以输出您想要的任何format: -

echo $diff->format("Time difference = %Y Years %M Months %D Days %H Hours %I Minutes %S Seconds");    

这会产生类似的东西: -

Time difference = 00 Years 00 Months 06 Days 23 Hours 17 Minutes 38 Seconds