当前位置: 首页 > 知识库问答 >
问题:

Laravel Carbon如何更改时区而不更改小时

费秦迟
2023-03-14

我试图找到一个解决方案,如何将存储在数据库中的日期时间转换为yyyyy-mm-dd HH-mm-ss,并给它时区美国/Los_Angeles。

如果我更改时区,Carbon将自动从时间中减去7小时,这就是将时间从UTC更改为PST时发生的情况,但我的DB中的时间设置为PST时间。例如,我希望时间是今天上午10点,但如果我改变时区,碳将转换为今天凌晨3点。

如果时区改为PST,但仍然保持上午10点的时间,我该怎么做?我需要一个API调用的时区,这就是为什么我需要弄清楚这一点。

共有3个答案

宋飞舟
2023-03-14

更好、更简单的方法是:

$carbon = new Carbon('YYYY-MM-DD HH:II:SS', 'America/Los_Angeles');

注意:不要忘记添加依赖use\Carbon\Carbon;

武嘉祥
2023-03-14

我想你要找的是:

Carbon::createFromFormat('Y-m-d H:i:s', $some_date, 'UTC')
    ->setTimezone('America/Los_Angeles')

首先,您设置了您最初拥有的时区,所以如果您将您的日期存储在数据库中为UTC,那么将默认时区设置为UTC,然后使用-

韩自怡
2023-03-14

使用shiftTimezone()方法代替setTimezone()

如果对现有的Carbon实例调用setTimezone(),它会将日期/时间更改为新时区,例如:

$datetime = Carbon::createFromFormat('Y-m-d H:i:s', '2020-09-15 23:45:00');
echo $datetime->toAtomString() . "\n";
// 2020-09-15T23:45:00+00:00

$datetime->setTimezone('America/Los_Angeles');
echo $datetime . "\n";
// 2020-09-15T16:45:00-07:00

但是,调用shiftTimezone()将在不更改时间的情况下设置时区。让我们从头开始重试:

$datetime = Carbon::createFromFormat('Y-m-d H:i:s', '2020-09-15 23:45:00');
echo $datetime->toAtomString() . "\n";
// 2020-09-15T23:45:00+00:00

$datetime->shiftTimezone('America/Los_Angeles');
echo $datetime->toAtomString() . "\n";
// 2020-09-15T23:45:00-07:00

当然,您也可以将这些方法链接在一起:

$datetime = Carbon::createFromFormat('Y-m-d H:i:s', '2020-09-15 23:45:00')
    ->shiftTimezone('America/Los_Angeles');
echo $datetime->toAtomString() . "\n";
// 2020-09-15T23:45:00-07:00

您还可以通过将时区作为设置的一部分传递给数组来“移动”时区:

$datetime = Carbon::createFromFormat('Y-m-d H:i:s', '2020-09-15 23:45:00')
    ->settings(['timezone' => 'America/Los_Angeles']);
echo $datetime->toAtomString() . "\n";
// 2020-09-15T23:45:00-07:00

 类似资料:
  • 问题内容: 我希望更改詹金斯州的时区。 我已经更改了Jenkins安装服务器的时区,但是Jenkins UI显示了不同的时间。 我需要为Jenkins UI设置PST时间。我该怎么做? 问题答案: 参见https://wiki.jenkins- ci.org/display/JENKINS/Change+time+zone 。Jenkins应该遵守为Java设置的时区。但是您可以通过添加以下内容来

  • 这个问题很基本,但是我想确定没有比我现在做的更好的方法了。假设我有一个脸书图标。到目前为止,当用户悬停在该图像上时,我会显示不同的图像以更改颜色。有没有一种替代的CSS方法来做到这一点,所以我不使用多个图像? 在下面的小提琴中,我试图改变背景,但这只覆盖了整个图像。 JSFIDLE

  • 问题内容: 我在启动时修改UIView高度有麻烦。 我必须使用UIView,我希望其中一个是屏幕尺寸* 70,另一个是填补空白。 这是我所拥有的 和 它在运行时对应用程序没有影响。我使用自动版式,但只有边距限制… 我做错了吗? 问题答案: 干得好。这应该工作。

  • 我已经将添加到中(使用),它很大。我能做点什么让它变小吗?

  • 问题内容: 我想动态更新元素的文本: 我是jQuery的新手,因此对我来说,这项任务似乎非常具有挑战性。有人可以指出我要使用的功能/选择器吗? 如果可能的话,我想在不为需要更改的文本添加新容器的情况下执行此操作。 问题答案: 在Javascript中,该属性为您提供元素的所有子节点,包括文本节点。 因此,如果您知道要更改的文本始终是元素中的第一件事,那么请给出以下HTML: 您可以这样做: 当然,

  • 问题内容: 如何在Tomcat中更改时区?Webapp之一(Solr)使用的时区不正确 (与MySQL时间戳相比) ,我认为更改Tomcat的时区会有所帮助。谢谢! 问题答案: 除非tomcat具有个人的TZ环境变量,否则它将在我的系统上使用的副本。 Tomcat的个人时区将在其启动脚本中以如下形式指定: