首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在php中将UTC转换为CST

在php中将UTC转换为CST
EN

Stack Overflow用户
提问于 2018-05-29 13:33:54
回答 2查看 5.9K关注 0票数 0

我希望使用PHP将UTC时间转换为CST。在谷歌搜索之后我得到了一个函数

代码语言:javascript
复制
function date_convert($dt, $tz1, $df1, $tz2, $df2) {
  // create DateTime object
  $d = DateTime::createFromFormat($df1, $dt, new DateTimeZone($tz1));
  // convert timezone
  $d->setTimeZone(new DateTimeZone($tz2));
  // convert dateformat
  return $d->format($df2);
}

echo date_convert('2018-05-29 11:44:00', 'UTC', 'Y-m-d H:i:s', 'CST', 'Y-m-d H:i:s');

输出是

2018-05-29 05:44:00

但是当我尝试将2018-05-29 11:44:00转换为UTC使用在线转换器时,我得到的结果是05/29/2018 6:44 AM,这比函数返回的时间多1小时。

有人能帮我找到正确的输出吗?提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2018-05-29 13:49:10

我无法解释,但它似乎只发生在EST/CST,即使将它改为D。

代码语言:javascript
复制
$n = new DateTime();  // 'date' => '2018-05-29 09:45:01.000000' America/New_York
$n->setTimeZone(new DateTimeZone('UTC')); // 'date' => '2018-05-29 13:45:01.000000'
$n->setTimeZone(new DateTimeZone('EDT')); // 'date' => '2018-05-29 08:45:01.000000'

但是,如果您使用的是一个位置而不是一个时区,它可以很好地工作:

代码语言:javascript
复制
$n->setTimeZone(new DateTimeZone('America/New_York'));  // 'date' => '2018-05-29 09:45:37.000000'
$n->setTimeZone(new DateTimeZone('America/Chicago'));  // 'date' => '2018-05-29 08:45:37.000000'

我建议使用像America/Chicago这样的地方。

票数 1
EN

Stack Overflow用户

发布于 2018-05-29 14:06:56

试试这个;

代码语言:javascript
复制
function date_convert($time, $oldTZ, $newTZ, $format) {
    // create old time
    $d = new \DateTime($time, new \DateTimeZone($oldTZ));
    // convert to new tz
    $d->setTimezone(new \DateTimeZone($newTZ));

    // output with new format
    return $d->format($format);
}
echo date_convert('2018-05-29 11:44:00', 'UTC', 'CST', 'Y-m-d H:i:s');

输出:

代码语言:javascript
复制
2018-05-29 05:44:00

CST是UTC-06,php运行良好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50585730

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档