gpt4 book ai didi

PHP UTC 到本地时间

转载 作者:IT王子 更新时间:2023-10-28 23:51:58 24 4
gpt4 key购买 nike

服务器环境

红帽企业 Linux
PHP 5.3.5

问题

假设我有一个 UTC 日期和时间,例如 2011-04-27 02:45,我想将其转换为我的本地时间,即 America/New_York。

三个问题:

1.) 我下面的代码可能会解决问题,你同意吗?

<?php

date_default_timezone_set('America/New_York'); // Set timezone.

$utc_ts = strtotime("2011-04-27 02:45"); // UTC Unix timestamp.

// Timezone offset in seconds. The offset for timezones west of UTC is always negative,
// and for those east of UTC is always positive.
$offset = date("Z");

$local_ts = $utc_ts + $offset; // Local Unix timestamp. Add because $offset is negative.

$local_time = date("Y-m-d g:i A", $local_ts); // Local time as yyyy-mm-dd h:m am/pm.

echo $local_time; // 2011-04-26 10:45 PM

?>

2.) 但是,$offset 的值会根据夏令时 (DST) 自动调整吗?
3.) 如果没有,我应该如何调整我的代码以自动调整 DST?

谢谢 :-)

最佳答案

这将使用原生 PHP 执行您想要的操作 DateTimeDateTimeZone类:

$utc_date = DateTime::createFromFormat(
'Y-m-d G:i',
'2011-04-27 02:45',
new DateTimeZone('UTC')
);

$nyc_date = $utc_date;
$nyc_date->setTimeZone(new DateTimeZone('America/New_York'));

echo $nyc_date->format('Y-m-d g:i A'); // output: 2011-04-26 10:45 PM

参见 DateTime::createFromFormat man page获取更多信息。

time zones that do and do not currently have DST 之间进行了一些实验之后我发现这会考虑夏令时。使用我上面的方法进行的相同转换会呈现相同的结果时间。

关于PHP UTC 到本地时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5806526/

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