web-dev-qa-db-ja.com

jQueryで現地時間を取得するにはどうすればよいですか?

JQueryを使用していますが、ドイツの現地時間を取得する必要があります。

どの国からでも私のウェブサイトにアクセスする人は誰でも、ドイツが何時かを知ることができるはずです。

時刻が0:00から12:00の場合は、「おはよう」という警告を表示する必要があります。

時間が12:00から17:00の間にある場合は、「GoodAfternoon」というアラートを読み取る必要があります。

これをjQueryに実装するにはどうすればよいですか?

13
venkatachalam

クライアントのローカルタイムゾーンオフセットを取得してGMT時刻を取得してから、ドイツタイムゾーン(中央ヨーロッパ時間GMT + 1)のオフセット時間を追加できます。

function getDate(offset){
  var now = new Date();
  var hour = 60*60*1000;
  var min = 60*1000;
  return new Date(now.getTime() + (now.getTimezoneOffset() * min) + (offset * hour));
}

//...

var dateCET = getDate(1); // Central European Time is GMT +1

if (dateCET.getHours() < 12) {
    alert ("Good morning.");
} else {
    alert ("Good afternoon.");
}

更新:@ Joshに同意します。上記のコードは、完全にクライアントに依存します。もっとうまくやってみましょう:

$(document).ready(function(){
  var timezone = "Europe/Berlin";
  $.getJSON("http://json-time.appspot.com/time.json?tz="+timezone+"&callback=?",
    function(data){
      if (data.hour < 12) {
        alert ("Good morning in "+timezone);
      } else {
        alert ("Good afternoon in "+timezone);
      }
    })
});

現在、 [〜#〜] jsonp [〜#〜] を利用して jsontime サーバーへのクロスドメインリクエストを実行しています。このサーバーは完全なJSONAPIを時間とタイムゾーン情報を照会します。

コードで遊ぶことができます ここ そしてJSONP APIを探索することができます ここ

Hurray!、サーバー側のコードはありません!

24
CMS

ドイツでの時間を取得しますか、それともユーザーのタイムゾーンの時間をどこにいても取得しますか?後者の場合、Date()関数はデフォルトでローカルタイムゾーンで機能します。

var d = new Date();    // defaults to the current time in the current timezone
if (d.getHours() < 12) {
    alert ("Good morning.");
} else {
    alert ("Good afternoon.");
}
6
nickf

Webサーバーからページの非表示フィールドに日付/時刻を挿入する必要があります。その後、jQueryを使用してそれにアクセスし、自然な Javascript Date オブジェクトをロードできます。クライアント側の日付/時刻は制御不能であり、法外なものに設定される可能性があるため、notに依存したくありません。私を信じて。

4
Josh Stodola