Ändern Sie die Zeitzone in Lumen oder Laravel 5

75

Ich benutze das Lumen-Framework. Wie kann ich die Zeitzone auf Europa / Paris MESZ ändern?

Ich habe meiner .envDatei eine Variable hinzugefügt :

APP_TIMEZONE=Europe/Paris

Aber das funktioniert nicht. Was ist der richtige Weg, um die Zeitzone zu aktualisieren?

StormTrooper
quelle
1
Dies sollte mindestens in Lumen 5.2 ausreichen. Möglicherweise müssen Sie Ihre Datei config / app.php festlegen, um die Variablen env ('APP_TIMEZONE') in Laravel zu verwenden.
Matt Humphrey
2
Es funktioniert auch mit Lumen 5.1. Nach vielen Tagen wurde mir endlich klar, dass es nicht ausreicht, die Zeitzonen des Servers und der Datenbank zu ändern - Lumen ist das egal, bis Sie die Zeitzone für die .env-Datei festgelegt haben
Bizarro
Woher weißt du, dass es nicht funktioniert? Sind Datenbankdatensätze deaktiviert oder PHP-generierte Zeit? Haben Sie ein minimales Beispiel, um zu zeigen, wie Sie die falsche Zeit sehen?
Sherbrow

Antworten:

152

Sie können Ihre App-Zeitzone festlegen , indem Sie die app.phpDatei im configOrdner konfigurieren .

Um die Zeitzone zu ändern, ändern Sie den Wert der Zeitzone in der Datei app.php.

Dies wird in diesem Abschnitt geschrieben

|--------------------------------------------------------------------------
| 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.
|

Für mich benutze ich Asia / Dhaka als meine Bewerbungszeitzone.

Hier ist die entsprechende Syntax:

'timezone' => 'Asia/Dhaka'

Liste der Zeitzonen für PHP 5

Md Rashedul Hoque Bhuiyan
quelle
Zeitzone 'America / Los_Angeles' für PST. Vielen Dank
Connor Leech
9
Wenn Sie dies tun und es nicht funktioniert, führen Sie es aus, php artisan config:cachenachdem Sie Ihre app.php-Datei geändert haben. Sie müssen die Konfiguration unter der neuen Einstellung neu laden.
agm1984
4
Vergessen Sie nicht, ,am Ende der Zeile hinzuzufügen . ;). Ich meine'timezone' => 'Asia/Dhaka',
Md. Robi Ullah
40

Es gibt zwei Möglichkeiten, Ihren Code zu aktualisieren. 1. Öffnen Sie die Datei app.php im Konfigurationsverzeichnis unter lool Ihres Projekts. Gehen Sie die Seite entlang und überprüfen Sie die Anwendungszeitzone, in der Sie sie finden

'timezone' => 'UTC',

Hier können Sie Ihre Zeitzone wie hinzufügen

'timezone' => 'Europe/Paris',

Wenn Sie Ihre Zeitzone aus einer .envDatei verwalten möchten, können Sie den folgenden Code in Ihre config.phpDatei einfügen .

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

und fügen Sie die folgende Zeile in Ihre .envDatei ein.

APP_TIMEZONE='Europe/Paris'

Weitere Informationen finden Sie unter dem folgenden Link: https://laravel.com/docs/5.6/configuration#accessing-configuration-values

Prashant Barve
quelle
16

Stellen Sie nach dem Ändern von app.php sicher, dass Sie Folgendes ausführen:

 php artisan config:clear

Dies ist erforderlich, um den Cache der Konfigurationseinstellungen zu leeren. Wenn Sie feststellen, dass Ihre Zeitstempel nach dem Ändern der Zeitzone in Ihrer app.php-Datei immer noch falsch sind, sollte das Ausführen des obigen Befehls alles aktualisieren und Ihre neue Zeitzone sollte wirksam sein.

agm1984
quelle
8

Bitte versuchen Sie dies - Erstellen Sie ein Verzeichnis 'config' in Ihrem Lumen-Setup und erstellen Sie dann die Datei app.php in diesem 'config'-Verzeichnis. es wird so aussehen -

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

Dann können Sie überall auf diesen Wert zugreifen -

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

Wenn es nicht funktioniert, können Sie diese Zeilen in route.php hinzufügen

date_default_timezone_set('America/Los_Angeles');

Das hat bei mir funktioniert!

Sachin Vairagi
quelle
Dies ist nicht korrekt - app.timezonedas app.phpEinfügen der Konfigurationsdatei ist redundant, da der appTeil von config('app.timezone')auf den Dateinamen im config/Verzeichnis verweist .
Matt Humphrey
Okay @MattHumphrey, du kannst meine Antwort bearbeiten, wenn sie dir falsch erscheint.
Sachin Vairagi
Vielen Dank. Der letzte hat für mich gearbeitet. Es ist sehr frustrierend, wenn die gleichen Codezeilen für jemanden und nicht für andere funktionieren.
Mahammad Isgandarli
@ MahammadIsgandarli - Schön zu wissen, dass es für Sie funktioniert hat :)
Sachin Vairagi
Das Hinzufügen von date_default_timezone_set zur Routendatei hat bei mir einwandfrei funktioniert.
Hasan
7

Gehen Sie zu config -> app.php und ändern Sie 'timezone' => 'Asia / Jakarta',

(Dies ist meine Zeitzone)

Riowaldy Indrawan
quelle
3
Wie ist diese Antwort besser als die hier bereits gegebenen Antworten?
Alexander
4

In meinem Fall (Lesen eines Datums aus einer MySQL-Datenbank in einem Lumen 5.1-Projekt) hat die einzige Lösung darin bestanden, Carbon zum Festlegen der Zeitzone von Variablen zu verwenden:

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

Die Verwendung DB_TIMEZONE=-05:00in der .envDatei hat fast funktioniert, verarbeitet jedoch keine Sommerzeitänderungen.

Die Verwendung von APP_TIMEZONE=America/New_Yorkin der .envDatei hatte keine Auswirkung auf einen Zeitzonenwert, der in einer Lumen 5.1-Webanwendung aus einer MySQL-Datenbank abgerufen wurde, funktioniert jedoch in Lavarel 5.1.

Außerdem hat Lumen [lumen_project]/config/app.phpdie von mir erstellte Datei überhaupt nicht gelesen (es hat sich nicht beschwert, als ich dort einen Syntaxfehler eingefügt habe).

Die Verwendung date_default_timezone_sethat auch nicht funktioniert.

Bio-Anwalt
quelle
1
Danke dafür. Ich habe viele andere Lösungen ausprobiert (einschließlich der in Ihrer Zusammenfassung aufgeführten), und nichts hat funktioniert. Das Einstellen der Zeitzone innerhalb des Controllers als Carbon-Variable scheint vorerst funktioniert zu haben.
Sheldon Scott
4

Geben Sie in Lumens .env-Datei die Zeitzonen an. Für Indien wäre es wie:

APP_TIMEZONE = 'Asia/Calcutta'
DB_TIMEZONE = '+05:30'
Shasi Kanth
quelle
3

Sie müssen nur die Datei de app.php im Konfigurationsverzeichnis bearbeiten. Suchen Sie einfach die nächsten Zeilen

/*
|--------------------------------------------------------------------------
| 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',

Und ... chage es für:

'timezone' => 'Europe/Paris',
Juan Pablo Pisano
quelle
3

Standardmäßig ist die Zeitzone des Laravel-Projekts ** UTC *

  • Sie finden die Zeitzoneneinstellung in der App.php des Konfigurationsordners

'Zeitzone' => 'UTC',

Ändern Sie jetzt entsprechend Ihrer Zeitzone für mich Asien / Kalkutta

Für mich ist die Einstellung also 'Zeitzone' => 'Asien / Kalkutta',

  • Nachdem Sie Ihre Zeitzoneneinstellung geändert haben, führen Sie den Befehl php artisan config: cache aus

* Eine Liste der Zeitzonen finden Sie unter dieser URL unter https://www.w3schools.com/php/php_ref_timezones.asp

Aslam Ansari
quelle
2

Verwenden Sie PHP-Zeitzonen aus PHP-Handbuch PHP-Zeitzonen

Zum Beispiel habe ich den UTC-Wert in config / app.php mit geändert

'timezone' => 'Africa/Nairobi',
TechPotter
quelle
1

Es gibt eine einfache Möglichkeit, die Standardzeitzone in Laravel oder Lumen festzulegen.

Dies ist hilfreich, wenn Sie in mehreren Umgebungen arbeiten, in denen Sie je nach Umgebung unterschiedliche Zeitzonen verwenden können.

  1. Öffnen Sie die ENV- Datei in Ihrem Projektverzeichnis
  2. Fügen Sie APP_TIMEZONE=Asia/Kolkatain .env(Sie können wählen Sie eine beliebige Zeitzone aus den unterstützten Zeitzonen )
  3. Öffnen Sie die Datei app.php im Bootstrap- Ordner Ihres Projektverzeichnisses
  4. Fügen Sie date_default_timezone_set(env('APP_TIMEZONE', 'UTC'));in app.php.

Mit dieser Änderung nimmt Ihr Projekt Ihre .env- Zeitzone und wenn nichts eingestellt ist, nehmen Sie standardmäßig UTC .

Nachdem Sie den Befehl zum Ausführen der Zeitzoneneinstellung php artisan config:clearso geändert haben, dass Ihre Änderungen in Ihrer Anwendung berücksichtigt werden

Ankit Jindal
quelle
0

Für mich war die app.php hier, /vendor/laravel/lumen-framework/config/app.phpaber ich konnte sie auch von der .envDatei aus ändern, in der sie auf einen der hier aufgeführten Werte gesetzt werden kann (PHP-Originaldokumentation hier ).

Eloy Ruiz
quelle
-1

Bitte gehen Sie zur .env-Datei und ändern Sie den Wert von AWS_DEFAULT_REGION in einen speziellen Bereich, den Sie ...

AWS_DEFAULT_REGION = Asia/Dhaka
Hallo Hack
quelle
-2

Ändern Sie einfach APP_TIMEZONE = Asia / Colombo in .env und führen Sie php artisan lumen-config: cache aus, das in Lumen 5.7 für mich funktioniert hat

Sameera Rajapaksha
quelle
-4

Ich ändere es in der .env APP_TIMEZONE.

Für Kolumbien: APP_TIMEZONE = Amerika / Bogota auch für Paris wie dieses: APP_TIMEZONE = Europa / Paris

Quelle: https://www.php.net/manual/es/timezones.europe.php

Cristhian A Vargas
quelle
3
Ich sehe nicht, wie dies die Frage beantwortet.
Dharman
so ist es! Was für ein gutes Auge du hast, du musst sehr intelligent sein ... anfangs hat APP_TIMEZONE diesen UTC-Wert, aber wenn du ihn in einen der PHP-Werte änderst, ändert es die Zeitzone ..., in anderen Kommentaren ist es auch gut erklärt
Cristhian A Vargas