如何使用 Carbon 将日期时间字符串解析为当前默认时区?

我有一个不在当前时区的日期时间字符串: 2019-08-18T10:01:02Z

我需要这个字符串的 Carbon 版本。

当我简单地做: (new Carbon("2019-08-19 00:37:46"))->format('Y-m-d H:i:s');

它吐出: 2019-08-18 10:01:02

我需要它来获取值2019-08-18 06:01:02(代表最终用户应用程序的设置时区)。

有没有办法在调用 Carbon 时不指定时区来做到这一点?例如没有做Carbon::parse($file->getClientModified())->tz('America/New_York')

例如,我知道strtotime考虑到时区,因此:Carbon::createFromTimestamp(strtotime($str))会起作用,但我觉得必须有一些内部函数可以做到这一点,而我不知道。

基本上,我试图避免date_default_timezone_get()在任何地方调用或获取一些配置变量。

时区通常通过date_default_timezone_set().


拉莫斯之舞
浏览 438回答 2
2回答

慕斯709654

您可以将第二个参数传递给构造函数,以指定时区。例如:$carbon = new Carbon('2019-08-19 00:37:46', 'America/Los_Angeles');如果您想在应用程序方面更改它,只需在应用程序引导期间进行。在您的应用程序服务提供者中,您可以在boot()方法中进行基本的 boostrapping 。例如:public function boot() {     date_default_timezone_set('America/Los_Angeles');}

慕工程0101907

更新 config 文件夹中的 app.php 并更新那里的时区'timezone' => 'America/New_York'希望这能解决问题
打开App,查看更多内容
随时随地看视频慕课网APP