【发布时间】:2016-06-15 13:23:33
【问题描述】:
我试图区分 PHP 中的两个 DateTime 对象,但答案似乎是错误的。如您所见,diff() 函数给出了 4 小时 41 分钟的时差,但显然时差更接近 7 小时。
$eastern_tz = new DateTimeZone( "US/Eastern" );
$now = new DateTime( "now", $eastern_tz );
$future_date = new DateTime( $future_date_string ); //'2011-05-11 12:00:00'
$future_date->setTimezone( $eastern_tz );
$interval = $future_date->diff( $now );
var_dump( $now );
var_dump( $future_date );
var_dump( $interval );
return $interval->format( $format ); //"%d days, %h hours, %i minutes, %s seconds"
//调试信息
object(DateTime)[483]
public 'date' => string '2016-06-15 09:18:41' (length=19)
public 'timezone_type' => int 3
public 'timezone' => string 'US/Eastern' (length=10)
object(DateTime)[484]
public 'date' => string '2016-06-15 14:00:00' (length=19)
public 'timezone_type' => int 3
public 'timezone' => string 'US/Eastern' (length=10)
object(DateInterval)[479]
public 'y' => int 0
public 'm' => int 0
public 'd' => int 0
public 'h' => int 4
public 'i' => int 41
public 's' => int 19
public 'weekday' => int 0
public 'weekday_behavior' => int 0
public 'first_last_day_of' => int 0
public 'invert' => int 1
public 'days' => int 0
public 'special_type' => int 0
public 'special_amount' => int 0
public 'have_weekday_relative' => int 0
public 'have_special_relative' => int 0
【问题讨论】:
-
好吧,您的调试信息显示 $future_date 值不是您声称要插入的值。你确定你在 $future_date_string 中提供的值是正确的吗?
-
根据调试信息中显示的值,答案是正确的!
标签: php datetime dateinterval