2009-12-03 37 views
7

Tôi có một ứng dụng web có hiển thị tem datetime trên mỗi trang, ví dụ:Hiển thị ngày/giờ trong múi giờ của người dùng - về phía khách hàng

12 tháng 12 2009 06:00

Tôi muốn tự động phát hiện múi giờ của người dùng và thay đổi hiển thị bằng JavaScript.

Vì vậy, người sử dụng New York sẽ thấy:

12 tháng 12 năm 2009 18:00

Trong khi người dùng California sẽ thấy:

12 tháng 12 năm 2009 3 : 00 chiều

Mọi đề xuất?

+2

http://prideparrot.com/blog/archive/2011/9/how_to_display_dates_and_times_in_clients_timezone – VJAI

Trả lời

2

Đây là cách bạn có thể làm điều đó với sự tuyệt vời "tăng cường tiến bộ":

Output ngày mà bạn muốn nó xuất hiện, nhưng hãy chắc chắn để xác định múi giờ của nó (tôi sử dụng giờ đây, nhưng bạn có thể sử dụng UTC, v.v.) Sau đó hoán đổi nó với thời gian tải cục bộ (Tự động xử lý bởi JavaScript nếu múi giờ ban đầu được cung cấp).

<div id="timestamp">December 12, 2009 6:00 pm GMT</div> 
<script type="text/javascript"> 
    var timestamp = document.getElementById('timestamp'), 
     t   = new Date(timestamp.innerHTML), 
     hours  = t.getHours(), 
     min  = t.getMinutes() + '', 
     pm  = false, 
     months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; 

    if(hours > 11){ 
     hours = hours - 12; 
     pm = true; 
    } 

    if(hours == 0) hours = 12; 
    if(min.length == 1) min = '0' + min; 

    timestamp.innerHTML = months[t.getMonth()] + ' ' + t.getDate() + ', ' + t.getFullYear() + ' ' + hours + ':' + min + ' ' + (pm ? 'pm' : 'am'); 
</script> 
+0

Tôi nghi ngờ rằng IE sẽ phân tích cú pháp định dạng đó một cách chính xác. – Bergi

+0

@Bergi - Nó hoạt động trong IE8 + –

+0

Không hoạt động trong IE 11 –

6

Bạn có thể sử dụng Date.getTimeZoneOffset() để nhận chênh lệch cục bộ từ GMT.

var date = new Date(); 
var offset = date.getTimezoneOffset(); 

Từ đó có SMOP. Sử dụng đối tượng Javascript Date bạn có thể gọi date.toDateString để có được ngày có thể đọc được của con người. Nếu bạn cần nó phía máy chủ, có Javascript gửi bù đắp cho máy chủ của bạn với một GET hoặc POST.

Định dạng ngày là một câu chuyện khác. Javascript không cung cấp nhiều tính năng tích hợp. Bạn có thể tự mình hack nó, nhưng theo cách đó, lỗi và sự điên rồ nằm. Định dạng ngày tháng là một thư viện Javascript tốt nên cung cấp. Ví dụ: JQuery có Datepicker.formatDate.

0

Thư viện có các chức năng liên quan đến ngày giờ có thể giúp bạn rất nhiều. Trên thực tế, trên Mozilla Firefox của tôi, nó hiển thị tất cả các ngày và giờ theo múi giờ của trình duyệt.

Các vấn đề liên quan