免責事項:この記事はブロガーオリジナル記事ですが、許可ブロガーなく再生してはなりません。https://blog.csdn.net/u012193330/article/details/79637660
ビジネスシナリオ:
ページのサーバー時間は東部時間の8つの地区で、ページJS関数はサーバー時間と現地時間のユーザーを比較する必要があり、世界の残りの部分の時間と互換性があり、我々は東8回として、ユーザーのローカルタイムゾーンに変換する必要があります。
基本コンセプト
グリニッジ標準時
時間も世界として知られている地域のGMTのグリニッジ子午線上の場所、またはゼロのゾーン(時間帯)、呼び出されると。(より詳細な概念は言っていないために、我々はここでは必要ありません)例えば、我々中国人は東の8つの地区があり、北京はある(GMT + 08:00)
:のローカルおよびGMT時差取得分で、新しい新しいDate()と、GetTimezoneOffsetを()。
GMTは、正しい現地時間の点で、知られています
現地時間=グリニッジ標準時 - 時差
現地時間は、対応する変換GMT、知られています:
現地時間= GMT +時差
これは、他のタイムゾーンで時間的に、現地時間を知られています
差は時間単位で時間間隔に基づいているので。だから、0時00分の時間帯を算出した後、マイナスまたはプラスの対応時間(東部地区N + Nその後、時間、そして西部地区N -N時間)。対象時間帯差+ = +ローカルタイムゾーン時間間隔:計算を容易にするために、東領域は正の数N、N即ち、負示さ西部地域を付し
例:東部時間8つの地区にローカル時間に変換
var timezone = 8; //目标时区时间,东八区
var offset_GMT = new Date().getTimezoneOffset(); // 本地时间和格林威治的时间差,单位为分钟
var nowDate = new Date().getTime(); // 本地时间距 1970 年 1 月 1 日午夜(GMT 时间)之间的毫秒数
var targetDate = new Date(nowDate + offset_GMT * 60 * 1000 + timezone * 60 * 60 * 1000);
console.log("东8区现在是:" + targetDate);