所以,我有一个方法可以将时区转换为另一个:
public function timeZoneConverter($from, $to = "America/New_York", $outputformat){
$time = new DateTime($from, new DateTimeZone('America/New_York'));
$time->setTimezone(new DateTimeZone($to));
return $time->format($outputformat);
}
我从这样的cookie中提供$to
参数值:
$calendar->timeZoneConverter($episode->air_date, $_COOKIE['timezone'], "Y-m-d H:i:s")
但是如果未设置cookie,$to
参数将返回NULL,尽管我将“America / New_York”设置为默认值
为什么呢? cookie的空值是否会覆盖它?我可以像这样硬编码:
if($to == null){
$to = "America/New_York";
}
但这似乎有点愚蠢。
答案 0 :(得分:1)
那是你必须做的。将null
传递给可选参数不会导致PHP回退到默认值,它只会使用传递的null
。
此外,将可选参数放在所需参数列表的中间是没有意义的。如果不将某些值传递给$outputformat
,则无法传递必需参数$to
。
您可以删除默认值,并使用短合并语法来处理null
案例:
$time->setTimezone(new DateTimeZone($to ?: 'America/New_York'));