У меня есть код, подобный указанному ниже
LocationController
public function updateDriverLocation($id, $lat, $lng)
{
$location = LocationModel::findOrFail($id);
$location->lat = $lat;
$location->lng = $lng;
$location->last_updated_at = now();
$location->save();
TimeHelper::checkArrival($id, $lat, $lng, $location->last_updated_at);
return $driverLocation;
}
TimeHelper
public static function checkArrival(int $id, $lat, $lng, $lastUpdatedAt)
{
if (!$lat || !$lng) {
return false;
}
if (strtotime(now()) - strtotime($lastUpdatedAt) > 900) {
return false;
}
$today = date('Y-m-d', strtotime("+ 9 hours"));
...
}
Когда updateDriverLocation
называется, now()
внутри LocationController
возвращает время UTC, которое соответствует времени сервера, но внутри TimeHelper
, now()
возвращает локализованное время.Я хочу знать причину, почему это так.(Это относится и к функциям php, таким как date()
и strtotime()
) *
У меня есть много таких, как показано ниже в Base.php (И каждая модель расширяет его).
public function get`some field name`Attribute($value)
{
return $this->getLocalizedTime($value); // custom private function
}
Насколько я понимаю, это не должно влиять на приведенный выше результат, потому что оно должно влиять не только на то, когда данные поступают из базы данных, а такое странное поведение происходит даже с функциями php.
Я хочу знать причинуза поведение, описанное выше, а также как предотвратить это.Любой совет или предложение будут оценены.
Заранее спасибо.