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
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');
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');
}
Fichier de mise à jour config/app.php
Par exemple: 'timezone' => 'Asia/Jerusalem'
au lieu de 'timezone' => 'UTC'
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
}
Il semble que la solution consiste à utiliser non pas "CET" mais l'un des fuseaux horaires explicites, par exemple: "Europe\Minsk"
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');
}