php - 在php中为给定时间添加时区

标签 php date datetime time

我需要将给定的澳大利亚时间转换为 UTC。这次可以来自澳大利亚的不同州。我在数据库中有状态并将时间偏移存储在列中。

我想知道如何以这种方式添加或减去时间偏移量。

//存储状态及其列的值。

"NT" = +9.30
"QLD" = +10.00
"WA" = +8.00

我正在以这种方式选择日期时间,需要减少偏移量。
$timeAinUTC = date("H:i A", strtotime("07am")) - (offset); 

i.e $timeAinUTC = date("H:i A", strtotime("07am")) - (+9.30);

我怎样才能用 php 的 datetime 完成这种工作?

编辑 1,

我试过这个来添加我的偏移量,但似乎我不能提供像 2.30 小时或 2.50 这样的双值

当我要求它以这种方式添加 2 小时时,它会起作用。
strtotime($current_time . "+2hours");

但是当我像下面这样添加时,它是错误的。
strtotime($current_time . "+2.30hours");

编辑 2

澳大利亚所有可用的州。
ACT、NSW、NT、QLD、SA、TAS、VIC、WA

http://wwp.greenwichmeantime.com/time-zone/australia/time-zones/

编辑 3

我按照下面的人在答案中的解释进行了尝试。
$date = new DateTime('2013-10-01 01:45', new DateTimeZone('Australia/Melbourne'));
echo $date->format('Y-m-d h:i:s A') . "<br>";

$date->setTimezone(new DateTimeZone('UTC'));
echo $date->format('Y-m-d h:i:s A') . "<br>";

但它输出,
2013-10-01 01:45:00 AM
2013-09-30 03:45:00 PM

这怎么会是错的?根据我的理解,2013-09-30 03:45:00 PM 是错误的,实际上它应该比 2013-10-01 01:45:00 AM 晚 10 小时成为 UTC,不是吗?

最佳答案

您可以这样转换时间:

<?php
$date = new DateTime('2013-10-01', new DateTimeZone('UTC'));
echo $date->format('Y-m-d H:i:sP') . "\n";

$date->setTimezone(new DateTimeZone('Australia/Melbourne'));
echo $date->format('Y-m-d H:i:sP') . "\n";
?>

此处列出了 PHP 支持的时区:
http://www.php.net/manual/en/timezones.australia.php

关于php - 在php中为给定时间添加时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19108362/

相关文章:

javascript - 对 jQuery 的自动完成结果进行排序

php - array_walk_recursive 返回值

javascript - 无法使用语言环境 en 解析月份三个字母的月份

python - 将 'th' 格式的日期转换为日期时间以进行日期比较?

php - 我如何在 URL 中将多个值传递给另一个页面

PHP PDO 查询不工作

c# - 如何从按周、月、季度或年分组的随机日期列表中提取最大日期?

java - 以这种格式 dd/MM/yy 将日期保存在数据库中

javascript - 现在如何在 JS 中向 UTC 添加天数?

c# - 使用 HttpClient 通过 AttributeRouting 在 URL 中发送日期