月曜日から金曜日の特定の時間(午前9時〜17時30分)に該当するかどうかを確認するコードがあります。全員が閲覧できるようにタイムゾーンをGBに設定する
function checkTime() {
var d = new Date(); // current time
var hours = d.getHours();
var mins = d.getMinutes();
var day = d.getDay();
return day >= 1
&& day <= 5
&& hours >= 9
&& (hours < 17 || hours === 17 && mins <= 30);
}
これは正しく動作していますが、ユーザーのブラウザ時間に基づいて時刻を確認します。
私がしたいことは、午前9時から午後17時30分まで英国時間のみをチェックしてください。
米国のサイト/スクリプトを午前10時(UTC-7)に表示している場合は、イギリス時間18:00 pm(UTC + 1)になるためタイムチェッカーの外になります。
私は何をしようとしているのでしょうか?ユーザーのタイムゾーンを取得してからUK時間に変換してから、checkTime()
スクリプトを実行しますか?
関連:http://stackoverflow.com/questions/1091372/getting例えば
は、人気のmoment.jsライブラリのコンパニオンライブラリですmoment-timezoneライブラリを使用して、あなたは、単にこれを行うことができます-the-clients-timezone-in-javascriptです。そこからのトリッキーな部分は、年間を通して夏時間を稼働させているので、英国時間を知っているので、GMTとの違いは計算時間が1時間外れることを意味する可能性があります。私はあなたがサーバーから英国の時間を取得し、代わりにクライアント側の解決策を見直すことをお勧めします。特に、クライアントクロックが正しく設定されているかどうかを確認する必要があります。 –
@RoryMcCrossan: '+ new Date()'はDSTの影響を受けず、ukのタイムスタンプを返します。 – dandavis
OPは、クライアントの日付から英国の時刻を知りたいと思っています。あなたが得ることができるのは、タイムゾーンオフセットを減算することによってGMTの時間ですが、英国はBST(すなわちGMT + 1)で稼動しています。 –