gpt4 book ai didi

PHP date_create 函数,使用时区缩写将 UTC 时间转换为不同的时区

转载 作者:可可西里 更新时间:2023-11-01 00:35:07 27 4
gpt4 key购买 nike

$placename=timezone_name_from_abbr("", $timezone * 3600, false);
$date = date_create($list['stamp'], timezone_open($placename));
$datetimezone=new DateTimeZone('Europe/London');
$dateTime = new DateTime($list['stamp'],$datetimezone);
$dateTime->setTimeZone(new DateTimeZone($placename));

编辑

我尝试了以下建议的代码作为答案,它产生的时间比应有的时间少了 2 小时。我检查了我的数据库,数据库中的时间与格林威治标准时间相匹配。所以问题在于使用转换从 GMT 转换它

$timezone=-4

来自用户回答的代码,下面产生了两个小时的休息时间。从 GMT 转换为 America/New_York,但慢了两个小时。我检查了 placename 变量以确保它是 America/New_York。是什么原因造成的?

$placename=timezone_name_from_abbr("", $timezone * 3600, true);
$dateTime = new DateTime($list['stamp']);
$dateTime->setTimeZone(new DateTimeZone($placename));
echo $dateTime->format('F d g:i a');

原始问题

它没有将它转换为美国/纽约时间,而是生成了我存储在我的数据库中的 UTC 时间,为什么会这样,为什么它没有转换时间?它在数据库中存储为 2012-05-13 07:30:47

$placename=timezone_name_from_abbr("", $timezone * 3600, true);
$date = date_create($list['stamp'], timezone_open($placename));
echo date_format($date, 'F d g:i a');

最佳答案

$dateTime = new DateTime($date,new DateTimeZone('Europe/London')); 
$dateTime->setTimeZone(new DateTimeZone('America/New_York'));
echo $dateTime->format('F d g:i a');

请注意,我在创建 DateTime 对象时添加了第二个参数,以确保它知道我传递的是 GMT 时间,其他方式它将假定它是您的服务器本地时间,最终可能会得到不同的结果。

没有引号的第一个版本。

顺便说一下,您正在(在您的代码中)分配一个不带引号的字符串,这可能会或可能不会导致错误,因为 PHP 将尝试查找名为 America 的常量并除以它的常量名称为 New_York,但我假设这不是您想要的。

如果您有所有警告/通知/错误显示,您会看到类似这样的内容:

Notice: Use of undefined constant America - assumed 'America' in line 3;

哪个,如果你想考虑它最终会返回一个实际的警告(前两个是通知)告诉你你的跳水为零。从某种意义上说,PHP 是危险的,它可以让您做各种疯狂的事情,而实际上并没有明显地破坏任何东西。不要误会我的意思,我喜欢 PHP,您只需要一开始就小心点。

我给你的代码有效:)

如果您在创建时没有指定时区(作为构造函数的第二个参数),它将假定时区是您当前的时区(服务器时区),您可以通过将 GMT 传递到那里或无论您在数据库中存储了什么。

但是,文档中有一条警告说:注意:

The $timezone parameter and the current timezone are ignored when the $time parameter either is a UNIX timestamp (e.g. @946684800) or specifies a timezone (e.g. 2010-01-28T15:00:00+02:00).

Docs

关于PHP date_create 函数,使用时区缩写将 UTC 时间转换为不同的时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10570136/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com