好吧,我想通了,做我想做的哑巴,但功能性的方式,和它的作品。
这里是我的代码:
$dt = Carbon::parse($request->ShootDateTime)->timezone('America/Los_Angeles');
$toDay = $dt->format('d');
$toMonth = $dt->format('m');
$toYear = $dt->format('Y');
$dateUTC = Carbon::createFromDate($toYear, $toMonth, $toDay, 'UTC');
$datePST = Carbon::createFromDate($toYear, $toMonth, $toDay, 'America/Los_Angeles');
$difference = $dateUTC->diffInHours($datePST);
$date = $dt->addHours($difference);
我得到我想要将转换为一个时区,并分析它,并改变时区的时间。然后我得到日,月和年,并创建2个不同的日期,两者都将读作00:00:00,但由于它们在这种情况下相隔7小时,所以它们只能是00:00: 00如果他们有7个小时不同的话,那就是我下一次捕获的东西。最后,我将最初的日期时间添加到它,并在合适的时区给我适当的时间。
这是丑陋的,但它的作品。
真是一团糟。这就是为什么所有的服务器和日期应该总是被配置/存储为UTC的原因。 – gview
我的服务器设置为UTC,但我将日期存储为PST,因为我以前从未需要使用时区。 –
如果你的日期时间字符串本身不包含时区,你应该能够简单地在你的'config/app.php'中改变''timezone'=>'UTC''声明。这将指示Carbon/DateTime默认解释该特定时区中的任何日期时间字符串,因此您不必每次都在所有Carbon实例上转换时区(这会更改日期和/或时间)。 –