著者: BUILDER.COM
JavaScript スクリプトを使用すると、ユーザーの時計を直接表示して、Web ページに現地時間を簡単に表示できることは間違いありません。しかし、別の地域の時刻を表示したい場合、たとえば、本社が別の国にあり、現地時間ではなく「自宅」の時間を表示したい場合はどうすればよいでしょうか?
これを行うには、さまざまな時間計算を実行して、現地時間を目的地の時間に変換する必要があります。この記事では、これらの計算を実行する方法について説明します。
ステップ 1:
最初のステップは現地時間を取得することです。 JavaScript では、Data() オブジェクトを初期化することでこれを簡単に行うことができます。
// 現在位置の Date オブジェクトを作成します
d = new Date();
Data() オブジェクトの getTime() メソッドを呼び出すと、1970 年 1 月 1 日から現在時刻までのミリ秒数を表示できます。
// 1970 年 1 月 1 日以降のミリ秒に変換
localTime = d.getTime();
ステップ 2:
次に、Data() オブジェクトの getTimezoneOffset() メソッドを使用してローカル時間オフセット値を見つけます。デフォルトでは、このメソッドはタイム ゾーン オフセット値の結果を分単位で表示するため、この値は前の計算でミリ秒に変換されます。
// ローカル UTC オフセットを取得し、ミリ秒に変換します。
localOffset = d.getTimezoneOffset() * 60000;
getTimezoneOffset() メソッドの負の戻り値は、現地時間が世界標準時 (UTC) より前であることを示し、正の戻り値は、値は、協定世界時 (UTC) 以降の現地時間を示します。
注: 乗算係数 60,000 をどのようにして求めたのか疑問に思われる場合は、1,000 ミリ秒が 1 秒に相当し、1 分が 60 秒に相当することを思い出してください。したがって、分をミリ秒に変換するには、60 に 1,000 を掛けて、60,000 となります。
3 番目のステップ
では、現地時間と現地タイム ゾーン オフセット値を加算して、現在の国際標準時間 (UTC) を取得します。
// UTC 時間をミリ秒で取得します
utc = localTime + localOffset;
ここで、変数 utc には現在の国際標準時間 (UTC) が含まれています。ただし、この時間は 1970 年 1 月 1 日から現在までのミリ秒数で表されます。まだ計算が残っているので、とりあえずこのように表現してみます。
4 番目のステップでは
、国際標準時 (UTC) を取得します。次に、対象都市の国際標準時 (UTC) の 1 時間ごとのオフセット値を取得し、ミリ秒に変換して、国際標準時 (UTC) を追加します。
// 目的地の UTC 時間オフセットを取得して追加します
。 // たとえば、Bombay
// これは UTC + 5.5 時間の
オフセット = 5.5 です。
注: 乗算の場合、どうやって 3600000 を取得したか疑問に思われる方のために説明します
。
1000 ミリ秒は 1 秒に相当し、1 時間は 3600 秒に相当することに注意してください。したがって、時間をミリ秒に変換するには、3600 に 1000 を掛けて、3600000 となります。
現時点では、変数 Bombay にはインドのムンバイの現地時間が含まれています。この現地時間は、1970 年 1 月 1 日から現在までのミリ秒数で表されます。明らかに、これでは意味がありませんので、いくつかの計算を行う必要があります。
5 番目のステップ
では、新しい Data() オブジェクトを初期化し、このオブジェクトの toLocalString() メソッドを呼び出します。前のステップで計算された時刻値を、誰もが理解できる日付/時刻文字列に変換します。
// msec 値を日付文字列に変換します
nd = new Date(bombay)
document.writeln("Bombay time is " + nd.toLocaleString() + "<br>");
変換は完了です。
上記の手順を要約し
て理解した後、このスクリプト (リスト A) をもう一度見てみましょう。このスクリプトは、すべての計算を実行して時間値を返すコンパクトなカスタム関数 calcTime() を作成します。
List A
<html>
<head>
<script language="JavaScript">
// 現地時間を計算する関数
// 別の都市の
// 都市の UTC オフセットを指定して
function calcTime(city, offset) {
// Date オブジェクトを作成現在の場所
d = 新しい Date();
// ミリ秒に変換
// ローカル タイム ゾーン オフセットを追加
// UTC 時間をミリ秒で取得
utc = d.getTime() + (d.getTimezoneOffset() * 60000);
// 異なる都市の新しい Date オブジェクトを作成します
// 指定されたオフセットを使用して
nd = new Date(utc + (3600000*offset));
// 時間を文字列として返す
return "「 + city + " の現地時間は " + nd.toLocaleString()
}
// ボンベイ時間の
アラートを取得(calcTime('Bombay', '+5.5');
//」 get シンガポール時間
alert(calcTime('Singapore', '+8'))
// get ロンドン時間
alert('London', '+1'));
</script>
</head>
<body>
< /body>
</html>
ここで、関数 calcTime() は都市名とその協定世界時 (UTC) オフセット値 (時間単位) を受け入れます。次に、上記で説明したすべての計算を内部で実行し、この都市の現地時間を含む文字列を返します。
以下に、リスト A の出力のサンプルをいくつか示します。
ムンバイ現地時間は2005年8月1日月曜日午後4時43分51秒
シンガポール現地時間は2005年8月1日月曜日午後7時13分51秒
ロンドン現地時間は2005年8月1日月曜日午後12時13分51秒です
次回、Web ページのタイム ゾーン スクリプトを作成するときに、このスクリプトを使用すると時間を節約できると思います。楽しむ! !