Bạn có thể lấy múi giờ địa phương bù đắp của khách hàng để có được thời giờ và sau đó thêm giờ bù đắp của múi giờ Đức (Trung Âu 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.");
}
Cập nhật : Tôi đồng ý với @Josh, mã ở trên hoàn toàn phụ thuộc vào khách hàng. Chúng ta hãy cố gắng làm điều đó tốt hơn:
$(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);
}
})
});
Bây giờ chúng ta đang tận dụng JSONP để làm yêu cầu tên miền chéo đến máy chủ jsontime, máy chủ này cho thấy một API JSON hoàn chỉnh để truy vấn thời gian và thông tin múi giờ.
Bạn có thể phát bằng mã here và bạn có thể khám phá API JSONP here.
Hoan hô !, không có mã phía máy chủ!
Đừng dựa vào ngày/thời gian phía máy khách. Nó không thể được đảm bảo chính xác! –
Điều này thực sự không liên quan gì đến jQuery. –
Điều gì về thực tế là khách hàng luôn đúng? Theo như người dùng nhìn thấy, thời gian của họ là chính xác (mặc dù nó có thể sai). Lấy đúng thời điểm từ một máy chủ khác sẽ hiển thị cho người dùng thời gian sai từ quan điểm của họ. – sean