我继承了一个用PHP/Laravel编写的项目,该项目使用以下方式获取相对于用户时区的时间。
date_default_timezone_set($user->timezone);
$hour = date("H")
date_default_timezone_set('UTC');
由于这设置了所有php的默认时区,因此如果该代码的两个实例非常接近地运行,这似乎可能会导致代码在错误的用户时区运行时出现问题。
这是否有可能像我认为的那样影响其他代码?
有没有更好的方法来做到这一点,或者一开始就很糟糕?
我建议使用Carbon作为日期。
然后你可以根据用户的时区创建日期,如下所示:
Carbon::now()
->tz($user->timezone);
最棒的是,时区只为该日期设置,因此不会干扰其他PHP代码。