Можно заставить локальное смещение часового пояса клиента получать время 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 , этот сервер подвергает полный API JSON информации о часовом поясе и времени запроса.
можно играть с кодом здесь , и можно исследовать JSONP API здесь .
Ура!, никакой серверный код!
Вы хотите получить время в Германии, или время для часового пояса пользователя, везде, где они? Если последний, 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.");
}
Необходимо ввести дату/время от веб-сервера в скрытое поле на странице, и затем можно получить доступ к этому с jQuery и загрузить естественный объект Даты JavaScript. Вы не хотите полагаться на клиентскую дату/время, потому что она находится вне Вашего контроля и могла быть установлена на что-то возмутительное.Поверьте мне.