2012-04-24 3 views
8

кто может написать функцию, чтобы получить клиентов часового пояса, возвращаемого значения, как: EDTESTIST и так далееКак получить клиентов Часовой пояс в JavaScript?

+0

Http: // StackOverflow .com/questions/6939685/get-client-time-zone-from-browser Может быть дубликат? –

+0

Вам действительно не нужны сокращения. Если вы получаете КНТ, это стандартное время в Китае (UTC + 8) или стандартное время Кубы (UTC - 5)? –

ответ

11

toTimeString() метод дать время с именем часового пояса попробовать ниже ...

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

ouput 

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

Demo

или

Проверить : Automatic Timezone Detection Using JavaScript

загрузить jstz.min.js и добавить функцию в вашей HTML странице

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

Используйте Date(). GetTimezoneOffset() функцию, а затем построить хэш-таблицу из этого URL timeanddate связать его с если вы хотите использовать значение часового пояса.

1

Если вы посмотрите на результат вызова метода toString объекта Date, вы получите значение, что-то вроде «Tue Apr 24 2012 23:30:54 GMT + 1000 (AUS Eastern Standard Time)». Это будет зависеть от того, для чего установлен языковой стандарт вашей системы.

Оттуда вы можете сопоставить каждую заглавную букву в круглых скобках.

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

Уловка заключается в том, что не каждый браузер будет включать в себя скобки.

Если вы настроили таргетинг на Firefox с помощью известного Java-плагина, вы также можете использовать объект java в Javascript для создания нового объекта TimeZone (java.util.TimeZone) на основе имени (например, «America/Los_Angeles»)), затем вызовите метод getDisplayName, чтобы дать вам имя.

+0

К сожалению, я получаю «Чт 11 11 2014 11:29:07 GMT + 1000 (EST)», когда я использую новую Date(). ToString(); в Австралии в Chrome. Это путает из-за часового пояса США EST GMT-0400. –

0

Используйте jstz, чтобы получить имя часового пояса:

jstz.determine().name(); 

Он возвращает имена часовых поясов (как 'America/New York'), которые вы можете использовать с moment.js и т.д.

смещение (например, от JS Date объекта) недостаточно, поскольку он не несет дополнительную информацию о ДСТ (вы не будете знать, нужно ли отрегулировать время для перехода на летнее время и когда).

0
  • получить клиента часового пояса в JavaScript
  • выход из -12: +12
  • вы можете изменить выход изменением на этой линии -Math.round(a/60)+':'+-(a%60); Как -Math.round(a/60); вы получаете // + 2

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

reference

-1

Это идеальный ответ, чтобы получить полный часовой пояс

страну-
var a = new Date($.now());  
var regExp = /\(([^)]+)\)/;`enter code here` 
var matches = regExp.exec(a); 
alert(matches[1]); 

это встревоженное даст вам выход как индийское стандартное время, американский стандарт времени, африканское стандартное время:

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

Прошу прощения, но ссылка в вашем ответе выглядит как спам –

Смежные вопросы