web-dev-qa-db-fra.com

Comment définir Laravel Fuseau horaire carbone pour les horodatages?

J'ai un projet qui est principalement basé dans la région CET. J'ai défini CET dans config/app.php, mais tous les horodatages de pivot dans la base sont stockés en heure UTC?

Comment définir le fuseau horaire "global" pour les horodatages?

j'ai fait ce test:

<?php
$timezone = date_default_timezone_get();
echo "The current server timezone is: " . $timezone;
echo "<br />".date('m/d/Y h:i:s a', time());

$mytime = Carbon\Carbon::now();
echo "<br />".$mytime->toDateTimeString();
?>

et voici le résultat:

The current server timezone is: CET
06/09/2016 12:06:04 pm
2016-06-09 11:06:04

tnx Y

10
Yuray

Carbon utilise la fonction par défaut DateTime PHP, utilisez donc la fonction date_default_timezone_set (), par exemple: date_default_timezone_set('Europe/London');

14
thefallen

dans AppServiceProvider.php, vous pouvez ajouter la fonctionnalité php pour modifier l'horodatage de l'ensemble du projet

public function boot()
{
    Schema::defaultStringLength(191);
    date_default_timezone_set('Asia/Aden');
}
8
Hisham Shami

Fichier de mise à jour config/app.php

Par exemple: 'timezone' => 'Asia/Jerusalem' au lieu de 'timezone' => 'UTC'

4
Adam Pery

Vous pouvez y parvenir avec des mutateurs

public function getCreatedAtAttribute($value)
{

return Carbon::createFromTimestamp(strtotime($value))
    ->timezone(Config::get('app.timezone'))
    ->toDateTimeString(); //remove this one if u want to return Carbon object
}
4
GONG

Il semble que la solution consiste à utiliser non pas "CET" mais l'un des fuseaux horaires explicites, par exemple: "Europe\Minsk"

Fuseaux horaires PHP

Fuseaux horaires en Laravel 4

2
Yuray

Si vous utilisez Laravel Carbon TimeStamps, vous devez modifier le fuseau horaire dans le fichier App/Providers/AppServiceProvider.php

// App/Fournisseurs/AppServiceProvider.php

public function boot()
{
    date_default_timezone_set('Asia/Calcutta');
}
1
Ashwani Garg