我在我的应用中设置了动态时区,但它显示错误的结果。这是我的代码
$timezone = [
'asia_calcutta_time' => 'Asia/Calcutta',
'europe_madrid_time' => 'Europe/Madrid',
'us_eastern_time' => 'US/Eastern'
];
foreach ($timezone as $timeKey => $timeValue) {
\Config::set('app.timezone', $timeValue);
echo $timeValue . "<br>Seted time zone => ";
echo \Config::get('app.timezone') . "<br>";
print_r(new \DateTime('now'));
print_r("<br>");
}
我的输出
Asia/Calcutta
Seted time zone => Asia/Calcutta
DateTime Object ( [date] => 2017-07-05 14:51:41.000000 [timezone_type] => 3 [timezone] => Asia/Calcutta )
Europe/Madrid
Seted time zone => Europe/Madrid
DateTime Object ( [date] => 2017-07-05 14:51:41.000000 [timezone_type] => 3 [timezone] => Asia/Calcutta )
US/Eastern
Seted time zone => US/Eastern
DateTime Object ( [date] => 2017-07-05 14:51:41.000000 [timezone_type] => 3 [timezone] => Asia/Calcutta )
这里我使用\Config::set('app.timezone', $timeValue);
设置了时区,之后我使用\Config::get('app.timezone');
获得时区,然后它显示完美但是当我打印datetime对象时它会显示不同的时区,所以我该如何解决这个问题。我也尝试清除缓存,清除编译,清除配置,清除路由,清晰视图但它没有显示正确的结果
答案 0 :(得分:0)
我个人以前遇到过使用Config :: set()的问题。第一次调用该函数是它最后一次工作。你可以在这里看到一个参考:Way to use Config::set() twice in a function
您可以在DateTime中使用DateTimeZone
的新实例而不是使用Config::set()
来实现此目的:
foreach ($timezone as $timeKey => $timeValue) {
echo $timeValue . "<br>Seted time zone => ".$timeValue;
print_r(new \DateTime('now', new \DateTimeZone($timeValue)));
print_r("<br>");
}