好的,所以我在同一个PHP文件中有一些代码,我试图为澳大利亚的两个州设置默认时区。
ok首先是阿德莱德时间:
date_default_timezone_set('Australia/Adelaide');
$currentTime = strtotime(date("H:i"));
echo $currentTime;
现在是昆士兰时间
date_default_timezone_set('Australia/Queensland');
$currentTimeQld = strtotime(date("H:i"));
echo "<br />" . $currentTimeQld;
在夏令时期间,昆士兰在阿德莱德后面30分钟,所以我希望strtotime价值更低。 但是我为两个echo语句得到了相同的输出。
输出: 1507506480 1507506480 谁知道为什么。 感谢
更新:我想使用strtotime的原因是我可以计算 是否显示打开或关闭的标签
$openTime = strtotime("08:30"); $closeTime = strtotime("17:30"); $openCloseTag = ($currentTime >= $openTime && $currentTime <= $closeTime) ? '<span class="openTag">Open</span>' : '<span class="closeTag">Closed</span>';
答案 0 :(得分:1)
创建了一个DateTime对象。解决了你的情况:
date_default_timezone_set('Australia/Adelaide');
$currentTime= new DateTime();
$currentTime->setTimestamp(strtotime(date("H:i")));
echo $currentTime->format('H:i');
date_default_timezone_set('Australia/Queensland');
$currentTimeQld = new DateTime();
$currentTimeQld->setTimestamp(strtotime(date("H:i")));
echo "<br />" . $currentTimeQld->format('H:i');
输出:
12:58
12:28 -- 30 mins difference
在阅读文档后,我发现没有相对于时区的时间戳。所以在这种情况下,我们将使用时区offset
。获得时区偏移:
$currentTime= new DateTime(null, new DateTimeZone('Australia/Adelaide'));
echo $currentTime->getTimestamp() ."-". $currentTime->getOffset() ."<br />";
$currentTimeQld = new DateTime(null, new DateTimeZone('Australia/Queensland'));
echo $currentTimeQld->getTimestamp() ."-". $currentTimeQld->getOffset() ."<br />";
输出
1507694360-37800 //the second integer number is the offset which is in seconds
1507694360-36000 //the difference of the two is 1800 seconds = 30 mins
现在,知道它们之间存在差异,您可以根据需要随意使用它。