解説
「タイムゾーン」は、同じ標準時を利用する地域を指します。一国の中に複数のタイムゾーンがある場合もあれば、そうでない場合もあります。
日本では同じ時刻を使い、その標準時は、兵庫県明石市を通る東経135度の経線を基準としています。そしてUTCに9時間を加えた値なので「UTC+9」と表記します。「UTC+9」は、日本以外にも韓国やインドネシアの東部、パラオや東ティモールなどがあります。
「+」が付いた場合は、UTCより早く時間が訪れ、「-」が付いた場合は、UTCより遅く時間が訪れます。
タイムゾーンにはIDがあり、日本の標準時を指す場合は「Asia/Tokyo」となります。韓国の場合は「Asia/Seoul」となり、同じ「UTC+9」ですが違うIDとなります。
タイムゾーンによっては夏時間(サマータイム)があります。夏時間がある場合、時間が切り替わるタイミングで時間が飛んだり、戻るタイミングで時間が重複したりします。こうした計算を自前でおこなうのは非効率なので、プログラミング言語で推奨されている関数やライブラリを使った方がよいです。
ネットを介して全世界に公開するプログラムでは、こうしたタイムゾーンの知識が必須となります。同じサービスでも、見に来る人の地域によって時刻は違います。そうした差異を吸収して、プログラムを動かす必要があります。
サンプル
「タイムゾーン」のサンプルです。ファイルはUTF-8で保存してください。検証はGoogle Chromeで行なっています。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>「タイムゾーン」のサンプル</title>
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<style>input[type="text"] {width: 100%;}</style>
<script>
$(function() {
const $tm1 = $('#tm1');
const $tm2 = $('#tm2');
const $tm3 = $('#tm3');
setInterval(() => {
const d = new Date();
$tm1.val(d.toLocaleString('ja-JP', { timeZone: 'UTC' }));
$tm2.val(d.toLocaleString('ja-JP', { timeZone: 'Africa/Cairo' }));
$tm3.val(d.toLocaleString('ja-JP', { timeZone: 'Asia/Tokyo' }));
}, 100);
});
</script>
</head>
<body>
UTC<br>
<input type="text" id="tm1"><br>
<br>
Africa/Cairo<br>
<input type="text" id="tm2"><br>
<br>
Asia/Tokyo<br>
<input type="text" id="tm3"><br>
</body>
</html>
