2012-03-19 23 views
32

Tôi biết cách nhận bù trừ múi giờ, nhưng những gì tôi cần là khả năng phát hiện một cái gì đó như "America/New York". Điều đó thậm chí có thể từ JavaScript hay là cái gì đó tôi sẽ phải làm khách dựa trên sự bù đắp?Tôi làm cách nào để có được tên múi giờ trong JavaScript?

+2

Đây là một chức năng Jon Nylander đã viết, có thể nó giúp https://bitbucket.org/pellepim/jstimezonedetect – HerrSerker

+0

Đây là câu trả lời có liên quan có thể giúp: http://stackoverflow.com/a/19421672/1447034 – Douglas

+0

Có thể trùng lặp của [Phát hiện từ viết tắt múi giờ bằng JavaScript] (http://stackoverflow.com/questions/1954397/detect-timezone-abbreviation-using-javascript) – jberryman

Trả lời

5

Bạn có thể sử dụng tập lệnh này. http://pellepim.bitbucket.org/jstz/

Tách kho hoặc sao chép tại đây. https://bitbucket.org/pellepim/jstimezonedetect

Khi bạn bao gồm tập lệnh, bạn có thể nhận danh sách múi giờ trong biến - jstz.olson.timezones.

Và mã sau được sử dụng để xác định múi giờ của trình duyệt của khách hàng.

var tz = jstz.determine(); 
tz.name(); 

Thưởng thức jstz!

1

Trong javascript, phương thức Date.getTimezoneOffset() trả về chênh lệch múi giờ từ UTC, tính bằng phút, cho ngôn ngữ hiện tại.

var x = new Date(); 
var currentTimeZoneOffsetInHours = x.getTimezoneOffset()/60; 

Moment'timezone sẽ là công cụ hữu ích. http://momentjs.com/timezone/

Chuyển đổi giữa các múi giờ Ngày

var newYork = moment.tz("2014-06-01 12:00", "America/New_York"); 
var losAngeles = newYork.clone().tz("America/Los_Angeles"); 
var london  = newYork.clone().tz("Europe/London"); 

newYork.format(); // 2014-06-01T12:00:00-04:00 
losAngeles.format(); // 2014-06-01T09:00:00-07:00 
london.format();  // 2014-06-01T17:00:00+01:00 
+1

Bạn không hiểu hàng đợi. – srsajid

+1

Mẫu mã của bạn không liên quan đến câu hỏi gốc.Bạn sẽ sử dụng thư viện này như thế nào để trả lại tên múi giờ hiện tại của người dùng? –

2

Hãy thử mã này tham khảo từ here

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"> 
</script> 
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jstimezonedetect/1.0.4/jstz.min.js"> 
</script> 
<script type="text/javascript"> 
    $(document).ready(function(){ 
    var tz = jstz.determine(); // Determines the time zone of the browser client 
    var timezone = tz.name(); //'Asia/Kolhata' for Indian Time. 

    alert(timezone); 

</script> 
25

Các Internationalization API hỗ trợ nhận được múi giờ của người dùng, và là supported trong tất cả các trình duyệt hiện nay.

console.log(Intl.DateTimeFormat().resolvedOptions().timeZone)

Hãy nhớ rằng trên một số phiên bản trình duyệt cũ có hỗ trợ API Quốc tế hóa, tài sản timeZone được thiết lập để undefined chứ không phải là chuỗi múi giờ của người dùng. Tốt nhất là tôi có thể biết, tại thời điểm viết (tháng 7 năm 2017) all current browsers except for IE11 sẽ trả về múi giờ của người dùng dưới dạng một chuỗi.

+1

Không bao giờ nghĩ rằng điều này đơn giản như vậy –

+1

tuyệt vời, đầu tiên tôi đã nhìn thấy mà không sử dụng thời điểm! Cảm ơn – r0bb077

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