如何为时间戳设置Laravel Carbon时区?

如何为时间戳设置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

我有一个主要基于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());

$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');
}