我在谷歌上搜索并阅读了一些关于时区和偏移量的 PHP 手册,但似乎找不到这个问题的答案!
所以我要在这里问。请让我知道这是重复的问题还是在其他地方有答案,我将删除它。
目前我正在使用下面的代码来显示 PHP 中两个位置之间的时间差。
代码工作正常但是有一个问题。如果 2location first" 在 "location two" 之后,结果将在数字前显示一个减号。
例如:如果第一个地点是纽约,第二个地点是伦敦,则时差将显示为 -5。
如果是相反的方式,即首先是伦敦,其次是纽约,它将显示为 5。
我需要做的是显示这样的时差:
伦敦比纽约“超前”5 小时。
或者
纽约比伦敦“落后”5 小时。
这是我的代码:
<?php
if( isset($_POST['submit']))
{
//be sure to validate and clean your variables
$timezone1 = htmlentities($_POST['timezone1']);
$timezone2 = htmlentities($_POST['timezone2']);
//then you can use them in a PHP function.
function get_timezone_offset( $origin_tz, $remote_tz ) {
$timezone1 = new DateTimeZone( $origin_tz );
$timezone2 = new DateTimeZone( $remote_tz );
$datetime1 = new DateTime("now", $timezone1);
$datetime2 = new DateTime("now", $timezone2);
$offset = $timezone1->getOffset($datetime1) - $timezone2->getOffset($datetime2);
return $offset;
}
$offset = get_timezone_offset($timezone1, $timezone2);
}
?>
在这里我回显结果:
<?php echo $offset/3600; ?>
这是位置的 HTML 下拉列表:
<form id="myForm" name="myForm" class="myForm" method="post" action="">
<select name="timezone2" id="timezone2" class="timezone2">
<optgroup label="Africa">
<?php
foreach($options as $key => $value)
{
echo '<option value="'. $key .'" label="'. $value .'">'.$value.'</option>';
}
?>
<option value="Africa/Abidjan" label="Abidjan">Abidjan</option>
<option value="Africa/Accra" label="Accra">Accra</option>
<option value="Africa/Addis_Ababa" label="Addis Ababa">Addis Ababa</option>
<option value="Africa/Algiers" label="Algiers">Algiers</option>
<option value="Africa/Asmara" label="Asmara">Asmara</option>
</optgroup>
</select>
顺便说一下,timezone1 和 timezone2 下拉列表是相同的。
有人可以帮我解决这个问题吗?
谢谢