Змініть часовий пояс на Lumen або Laravel 5


77

Я використовую фреймворк Lumen. Як я можу змінити часовий пояс на Європу / Париж CEST?

Я додав змінну у свій .envфайл:

APP_TIMEZONE=Europe/Paris

Але це не працює. Який правильний спосіб оновити часовий пояс?


1
Цього має бути достатньо як мінімум у Lumen 5.2. Можливо, вам доведеться встановити файл config / app.php для використання змінної env ('APP_TIMEZONE') у Laravel.
Метт Хамфрі,

2
Це працює і на Lumen 5.1. Через багато днів я нарешті зрозумів, що недостатньо змінити часові пояси сервера та БД - Lumen буде байдужий, поки ви не встановите часовий пояс у файлі .env
Bizarro,

Звідки ви знаєте, що це не працює? Це записи бази даних, які вимкнені, або час, згенерований PHP? У вас є мінімальний приклад, щоб показати, як ви бачите не той час?
Шербров

Відповіді:


157

Ви можете встановити часовий пояс програми , налаштувавши app.phpфайл у configпапці.

Щоб змінити часовий пояс, змініть значення часового поясу у файлі app.php.

Про це написано в цьому розділі

|--------------------------------------------------------------------------
| Application Timezone
|--------------------------------------------------------------------------
|
| Here you may specify the default timezone for your application, which
| will be used by the PHP date and date-time functions. We have gone
| ahead and set this to a sensible default for you out of the box.
|

Для мене я використовую Азію / Дакку як свій часовий пояс для подання заявки.

Ось відповідний синтаксис:

'timezone' => 'Asia/Dhaka'

список часових поясів для PHP 5


Часовий пояс "Америка / Лос-Анджелес" для PST. Дякую
Коннор Ліч

9
Якщо ви робите це, але це не працює, запустіть програму php artisan config:cacheпісля зміни файлу app.php. Вам потрібно перезавантажити конфігурацію за новим налаштуванням.
agm1984,

4
Не забудьте додати ,в кінці рядка. ;). Я маю на увазі'timezone' => 'Asia/Dhaka',
Мд. Робі Улла

41

Існує два способи оновлення коду. 1. Будь ласка, відкрийте файл app.php, який присутній у каталозі конфігурації в лолі вашого проекту. Перейдіть на сторінку вниз і перевірте часовий пояс програми, де ви знайдете

'timezone' => 'UTC',

Тут ви можете додати свій часовий пояс, як

'timezone' => 'Europe/Paris',

Якщо ви хочете керувати своїм часовим поясом з .envфайлу, ви можете додати нижче код у свій config.phpфайл.

'timezone' => env('APP_TIMEZONE', 'UTC'),

і додайте рядок нижче у свій .envфайл.

APP_TIMEZONE='Europe/Paris'

Будь ласка, перевірте посилання нижче для отримання додаткової інформації: https://laravel.com/docs/5.6/configuration#accessing-configuration-values


17

Після зміни app.php обов’язково запустіть:

 php artisan config:clear

Це потрібно для очищення кешу налаштувань конфігурації. Якщо ви помітили, що ваші мітки часу все ще помиляються після зміни часового поясу у вашому файлі app.php, тоді запуск вищезазначеної команди повинен оновити все, і ваш новий часовий пояс повинен бути ефективним.


8

Спробуйте це - Створіть каталог "config" у налаштуваннях просвіту, а потім створіть файл app.php всередині цього каталогу "config". це буде виглядати так -

<?php return ['app.timezone' => 'America/Los_Angeles'];

Тоді ви можете отримати доступ до його значення де завгодно, як це -

$value = config('app.timezone');

Якщо це не спрацює, ви можете додати ці рядки у маршрути.php

date_default_timezone_set('America/Los_Angeles');

Це спрацювало для мене!


Це неправильно - розміщення app.timezoneу app.phpфайлі конфігурації зайвим як appчастинаconfig('app.timezone') посилання посилається на ім'я файлу в папці config/.
Метт Хамфрі,

Гаразд @MattHumphrey, ти можеш відредагувати мою відповідь, якщо вона здається тобі неправильною.
Sachin Vairagi

Дякую. останній працював у мене. Дуже засмучує, коли однакові рядки коду працюють для когось, а не для інших.
Махаммад Ісгандарлі

@MahammadIsgandarli - Радий знати, що це спрацювало у вас :)
Сачин Вайрагі

додавання date_default_timezone_set до файлу маршрутів у мене спрацювало.
Hasan


4

У моєму випадку (читання дати з бази даних MySQL у проекті Lumen 5.1) єдиним результативним рішенням є використання Carbon для встановлення часового поясу змінних:

    $carbonDate = new Carbon($dateFromDBInUTC);
    $carbonDate->timezone = 'America/New_York';
    return $carbonDate->toDayDateTimeString(); // or $carbonDate->toDateTimeString() for ISO format

Використовуючи DB_TIMEZONE=-05:00 в.env файлі майже працювало, але не обробляє зміни літнього часу.

Використання APP_TIMEZONE=America/New_York у .envфайлі не вплинуло на значення часового поясу, отримане в веб-додатку Lumen 5.1 з бази даних MySQL, але воно працює в Lavarel 5.1.

Також Люмен взагалі не читав [lumen_project]/config/app.php створений мною файл (він не скаржився, коли я помістив туди синтаксичну помилку).

Використання date_default_timezone_setтеж не спрацювало.


1
Дякую за це. Я спробував багато інших рішень (включаючи ті, які ви перерахували у своєму резюме), і нічого не вдалося. Встановлення часового поясу в контролері як змінної Carbon, здається, працювало на даний момент.
Шелдон Скотт,

4

У файлі .env Lumen вкажіть часові пояси. Для Індії це було б так:

APP_TIMEZONE = 'Asia/Calcutta'
DB_TIMEZONE = '+05:30'

3

Вам просто потрібно відредагувати файл de app.php у каталозі конфігурації. Просто знайдіть наступні рядки

/*
|--------------------------------------------------------------------------
| Application Timezone
|--------------------------------------------------------------------------
|
| Here you may specify the default timezone for your application, which
| will be used by the PHP date and date-time functions. We have gone
| ahead and set this to a sensible default for you out of the box.
|
*/

'timezone' => 'UTC',

І .. змінити його на:

'timezone' => 'Europe/Paris',

3

За замовчуванням часовий пояс проекту laravel - ** UTC *

  • Ви можете знайти налаштування часового поясу в app.php в папці конфігурації

'timezone' => 'UTC',

тепер змінити відповідно до вашого часового поясу для мене це Азія / Калькутта

так що для мене настройка буде 'часовий пояс' => 'Азія / Калькутта',

  • Після зміни налаштування часового поясу виконайте команду php artisan config: cache

* для списку часових поясів відвідайте цю URL-адресу https://www.w3schools.com/php/php_ref_timezones.asp



1

Існує простий спосіб встановити часовий пояс за замовчуванням у laravel або lumen.

Це корисно під час роботи в кількох середовищах, де ви можете використовувати різні часові пояси залежно від кожного середовища.

  1. Відкрийте файл .env, який знаходиться у каталозі вашого проекту
  2. Додати APP_TIMEZONE=Asia/Kolkataв .env(Ви можете вибрати будь-який часовий пояс з підтримуваних часових поясів )
  3. Відкрийте app.php, який знаходиться в папці bootstrap каталогу вашого проекту
  4. Додати date_default_timezone_set(env('APP_TIMEZONE', 'UTC'));в app.php.

З цією зміною ваш проект прийме ваш часовий пояс .env , а якщо нічого не встановлено, за замовчуванням візьміть UTC .

Після модифікації налаштування часового поясу виконайте команду, php artisan config:clearщоб ваші зміни відображались у вашій програмі


0

Для мене app.php був тут, /vendor/laravel/lumen-framework/config/app.phpале я також міг змінити його з .envфайлу, де його можна встановити на будь-яке зі значень, перерахованих тут (оригінальна документація PHP тут ).


-2

будь ласка, перейдіть до файлу .env та змініть значення AWS_DEFAULT_REGION на спеціальну область, яку ви хочете ...

AWS_DEFAULT_REGION = Asia/Dhaka


-5

Я модифікую його в .env APP_TIMEZONE.

Для Колумбії: APP_TIMEZONE = Америка / Богота також для Парижу, як це: APP_TIMEZONE = Європа / Париж

Джерело: https://www.php.net/manual/es/timezones.europe.php


3
Я не бачу, як це відповідає на питання.
Дхарман,

так є! яке у вас добре око, ви повинні бути дуже розумними ... спочатку APP_TIMEZONE має це значення UTC, але якщо ви зміните його на одне зі значень php, воно змінює часовий пояс ...., в інших коментарях це також добре пояснено
Cristhian A Vargas
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.