2009-03-19 11 views
13

Tôi đang sử dụng jQuery và tôi cần có thời gian địa phương cho Đức.Làm cách nào để có được thời gian địa phương trong jQuery?

Bất kỳ ai truy cập trang web của tôi từ bất kỳ quốc gia nào cũng có thể biết thời gian ở Đức.

Nếu thời gian từ 0:00 đến 12:00, tôi cần đọc thông báo: "Chào buổi sáng".

Nếu thời gian là từ 12:00 đến 17:00, tôi cần đọc thông báo: "Good Afternoon".

Làm cách nào để triển khai tính năng này trong jQuery?

+2

Đừ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! –

+0

Điều này thực sự không liên quan gì đến jQuery. –

+3

Đ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

Trả lời

24

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ủ!

+3

Xin lỗi vì đã phá vỡ bong bóng của bạn, bạn tôi, nhưng điều này hoàn toàn không đáng tin cậy. Điều này phụ thuộc vào đồng hồ hệ thống máy khách, điều này có thể được thiết lập cho một cái gì đó hoàn toàn thái quá. Sử dụng đồng hồ khách hàng đã hoàn toàn sai lầm ứng dụng cho tôi trong quá khứ. Phải tiêm ngày/thời gian phía máy chủ vào trường ẩn! –

+0

Đồng ý, điều này hoàn toàn phụ thuộc vào khách hàng, sẽ đăng nội dung nào đó tốt hơn ... – CMS

+8

bạn không nghĩ rằng điều này hơi nhiều đối với một cái gì đó vừa được sử dụng để hiển thị lời chào? nó không phải là một ứng dụng điều khiển khởi chạy tên lửa, bạn biết đấy. – nickf

6

Bạn có muốn dành thời gian ở Đức hoặc thời gian cho múi giờ của người dùng, cho dù họ ở đâu không? Nếu sau này, hàm Date() mặc định hoạt động trong múi giờ địa phương.

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

Bạn cần phải tiêm ngày/giờ từ máy chủ web của bạn vào trường ẩn trên trang và sau đó bạn có thể truy cập vào đó bằng jQuery và tải đối tượng tự nhiên Javascript Date. Bạn làm không phải muốn dựa vào ngày/thời gian phía máy khách bởi vì nó nằm ngoài tầm kiểm soát của bạn và có thể được đặt thành một điều gì đó thái quá. Tin tôi đi.

+0

Tôi vừa chỉnh sửa câu trả lời của tôi, cổ vũ – CMS

+1

ok, với trường hợp được nêu trong OP, nghĩa là nó được sử dụng cho lời chào "chào buổi sáng/buổi tối" đơn giản, điều này thật lố bịch và hơn thế nữa đỉnh. – nickf

+5

nickf: đảm bảo 100% rằng TẤT CẢ người dùng sẽ có một trải nghiệm tương tự là KHÔNG lố bịch cũng không phải trên đầu. Trong thế giới của tôi, nó hoàn toàn bắt buộc. –