2012-04-24 25 views
8

người có thể viết một hàm để có được khu vực khách hàng thời gian, giá trị trả về như: EDTESTIST và vân vânCách nhận khách hàng Múi giờ trong JavaScript?

+0

http: // stackoverflow .com/questions/6939685/get-client-time-zone-từ-trình duyệt Có thể là một bản sao? –

+0

Bạn thực sự không muốn viết tắt như thế. Nếu bạn nhận được CST, đó là Giờ chuẩn Trung Quốc (UTC + 8), hoặc Giờ chuẩn Cuba (UTC - 5)? –

Trả lời

11

toTimeString() phương pháp đưa ra thời gian với tên múi giờ cố gắng trình bày dưới đây ...

var d=new Date(); 
var n=d.toTimeString();  

ouput 

03:41:07 GMT+0800 (PHT) or 09:43:01 EDT 

Demo

hoặc

Kiểm tra : Automatic Timezone Detection Using JavaScript

tải jstz.min.js và thêm một chức năng để trang html của bạn

<script language="javascript"> 
     function getTimezoneName() { 
      timezone = jstz.determine_timezone() 
      return timezone.name(); 
     } 
    </script> 
2

Sử dụng Date(). GetTimezoneOffset() chức năng và sau đó xây dựng một bảng băm từ URL này timeanddate để liên hệ nó để nếu bạn muốn sử dụng giá trị múi giờ.

1

Nếu bạn xem kết quả gọi phương thức toString của đối tượng Ngày, bạn sẽ nhận được một giá trị giống như "Thứ Ba ngày 24 tháng 4 năm 2012 23:30:54 GMT + 1000 (Giờ chuẩn miền Đông AUS)". Điều này sẽ phụ thuộc vào ngôn ngữ hệ thống của bạn được đặt thành.

Từ đó bạn có thể đối sánh từng chữ cái viết hoa trong dấu ngoặc đơn.

var paren = new Date().toString().match(/\(.+\)/); 
return paren ? paren[0].match(/([A-Z])/g).join("") : ""; 

Điểm bắt buộc là không phải mọi trình duyệt sẽ bao gồm giá trị được lồng.

Nếu bạn đang nhắm mục tiêu Firefox bằng một plugin Java đã biết, bạn cũng có thể khai thác đối tượng java trong Javascript để tạo đối tượng TimeZone (java.util.TimeZone) mới dựa trên tên (ví dụ: "America/Los_Angeles")), sau đó gọi phương thức getDisplayName để cung cấp cho bạn tên.

+0

Thật không may tôi nhận được "Thu 11 tháng 9 năm 2014 11:29:07 GMT + 1000 (EST)" khi tôi sử dụng Date() mới toString(); ở Úc trong Chrome. Điều này gây nhầm lẫn do múi giờ EST của Hoa Kỳ GMT-0400. –

0

Sử dụng jstz để có được tên múi giờ:

jstz.determine().name(); 

Nó trả về tên múi giờ (như 'America/New York') mà sau đó bạn có thể sử dụng với moment.js, vv

Một bù đắp (ví dụ như từ một js Date đối tượng) là không đủ, bởi vì nó không mang theo thông tin DST bổ sung (bạn sẽ không biết liệu thời gian cần phải được điều chỉnh cho Tiết kiệm ban ngày hay không).

0
  • lấy múi giờ khách hàng trong javascript
  • đầu ra từ -12: 12
  • bạn có thể chỉnh sửa đầu ra bởi sự thay đổi về dòng này -Math.round(a/60)+':'+-(a%60); Giống như -Math.round(a/60); bạn nhận được // + 2

    var a = new Date().getTimezoneOffset(); 
    var res = -Math.round(a/60)+':'+-(a%60); 
    res = res < 0 ?res : '+'+res; 
    console.log(res); 
    

reference

-1

Đây là câu trả lời hoàn hảo để có được đầy đủ các múi giờ từng quốc gia

var a = new Date($.now());  
var regExp = /\(([^)]+)\)/;`enter code here` 
var matches = regExp.exec(a); 
alert(matches[1]); 

cảnh báo này sẽ cung cấp cho bạn kết quả như thời gian tiêu chuẩn Ấn Độ, Mỹ thời gian tiêu chuẩn, Phi tiêu chuẩn thời gian:

//$("#timezone option:contains(" + matches[1] + ")").attr('selected', 'selected'); 
+1

Tôi xin lỗi nhưng liên kết trong câu trả lời của bạn trông giống như một thư rác –

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