Google で検索し、タイムゾーンとオフセットに関する PHP のマニュアルをいくつか読みましたが、この質問に対する答えが見つからないようです!
なのでここで質問します。これが重複した質問であるか、他の場所に回答がある場合はお知らせください。削除します。
現在、次のコードを使用して、PHP の 2 つの場所の時差を表示しています。
コードは正常に動作しますが、問題があります。2location first" が "location two" の後ろにある場合、結果は数値の前にマイナスで表示されます。
たとえば、最初の場所がニューヨークで 2 番目の場所がロンドンの場合、時差は -5 と表示されます。
逆の場合、つまりロンドンが 1 位でニューヨークが 2 位の場合は 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 のドロップダウンリストは同じです。
誰かがこれで私を助けることができますか?
ありがとう