如何为时间戳设置Laravel Carbon时区?
我有一个主要基于CET地区的项目。我在config/app.php中设置了CET, 但是,基础中的所有透视时间戳都存储在UTC时间 如何设置时间戳的“全局”时区 我做了这个测试:如何为时间戳设置Laravel Carbon时区?,laravel,eloquent,php-carbon,Laravel,Eloquent,Php Carbon,我有一个主要基于CET地区的项目。我在config/app.php中设置了CET, 但是,基础中的所有透视时间戳都存储在UTC时间 如何设置时间戳的“全局”时区 我做了这个测试: <?php $timezone = date_default_timezone_get(); echo "The current server timezone is: " . $timezone; echo "<br />".date('m/d/Y h:i:s a', time()); $myti
<?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();
?>
tnx
Y您可以通过访问器实现它
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
}
Carbon使用默认的DateTimePHP对象,因此使用date\u default\u timezone\u set()函数,例如:
date\u default\u timezone\u set(“欧洲/伦敦”)代码>解决方案似乎不是使用“CET”,而是使用一个明确的时区,例如:“Europe\Minsk”
在AppServiceProvider.php中,您可以添加php功能来更改整个项目的时间戳
public function boot()
{
Schema::defaultStringLength(191);
date_default_timezone_set('Asia/Aden');
}
更新文件config/app.php
例如:“时区”=>“亚洲/耶路撒冷”
而不是“时区”=>“UTC”
如果您使用的是拉维碳时间戳,
然后您必须在App/Providers/AppServiceProvider.php
文件中更改时区
// App/Providers/AppServiceProvider.php
public function boot()
{
date_default_timezone_set('Asia/Calcutta');
}
它是一个名为date.timezone=Australia/Melbourne
的php.ini文件设置。感谢您指向函数。在Laravel上,最佳做法是从config/app.php
文件中修改timezone
选项。我认为这是最新Laravel的答案,对吗<代码>配置('app.timezone')
将影响Carbon
时区,对吗?有人能证实吗?@Syamsoul Azrien right如果你已经部署了你的应用程序,我不建议这样做。全局更改时间戳意味着它将开始使用更新的时间戳在数据库中保存时间戳,这意味着数据库的某些行将使用旧的时间戳保存,而其他行将使用新的时间戳保存…这是一个访问器而不是一个变异器,但我同意这里的最佳实践(特别是当您的应用程序跨越时区或在受DST更改影响的时区中使用时)始终以UTC格式保存日期,并在显示日期时更改时区,而不是在存储日期时更改。这不是对OP的回答,但如果您正在寻找如何更改例如zulu时间输入的时区,则可以这样做Carbon\Carbon::parse('2021-01-28T23:45:00.000000 z')->setTimezone('Europe/Brussel')->格式('Y-m-d H:i'))
=>“2021-01-29 00:45”
// App/Providers/AppServiceProvider.php
public function boot()
{
date_default_timezone_set('Asia/Calcutta');
}