JQueryを使用していますが、ドイツの現地時間を取得する必要があります。
どの国からでも私のウェブサイトにアクセスする人は誰でも、ドイツが何時かを知ることができるはずです。
時刻が0:00から12:00の場合は、「おはよう」という警告を表示する必要があります。
時間が12:00から17:00の間にある場合は、「GoodAfternoon」というアラートを読み取る必要があります。
これをjQueryに実装するにはどうすればよいですか?
クライアントのローカルタイムゾーンオフセットを取得して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!、サーバー側のコードはありません!
ドイツでの時間を取得しますか、それともユーザーのタイムゾーンの時間をどこにいても取得しますか?後者の場合、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.");
}
Webサーバーからページの非表示フィールドに日付/時刻を挿入する必要があります。その後、jQueryを使用してそれにアクセスし、自然な Javascript Date オブジェクトをロードできます。クライアント側の日付/時刻は制御不能であり、法外なものに設定される可能性があるため、notに依存したくありません。私を信じて。