javascript: как рассчитать точную дату и время для разных городов мира

для моего проекта мне нужно иметь решение для отображения точного (даты и) времени для пары определенных городов (Лондон, Нью-Йорк, Гонконг) вместе с местным временем - независимо от того, где в мире я выполняю этот код JavaScript. Мне нужно работать в JavaScript без подключения к Интернету (автономный HTML).

var myowntime = new Date();
var myhours = myowntime.getHours();
var myminutes = myowntime.getMinutes();
var utch = myowntime.getUTCHours();
var utcm = myowntime.getUTCMinutes();
var localdst;

var london_hours, london_minutes;
var ny_hours, ny_minutes;
var hk_hours, hk_minutes;

// Local Daylight Saving and TimeZone calculation

// local DST first
var jan = new Date(myowntime.getFullYear(), 0, 1);
var jul = new Date(myowntime.getFullYear(), 6, 1);
if (myowntime.getTimezoneOffset() < Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset())) {
  localdst = true;
} else {
  localdst = false;
}
var dst_hours = 0;
if (localdst) {
  dst_hours = (Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset() - myowntime.getTimezoneOffset())/60;
}
mydiff_utc_hours = -myowntime.getTimezoneOffset()/60;
if (localdst) {
  mydiff_utc_hours -= dst_hours;
}

london_hours = utch;
if (localdst) {
  london_hours += dst_hours;
}
ny_hours = utch - 5;
if (localdst) {
  ny_hours += dst_hours;
}
hk_hours = utch + 8; // no DST as far as I know

if (hk_hours > 23) {
  hk_hours -= 24;
}
if (hk_hours < 0) {
  hk_hours += 24;
}

if (ny_hours > 23) {
  ny_hours -= 24;
}
if (ny_hours < 0) {
  ny_hours += 24;
}

if (london_hours > 23) {
  london_hours -= 24;
}
if (london_hours < 0) {
  london_hours += 24;
}

Проблема... Я могу определить только местное летнее время и предполагаю, что сейчас +60 минут. Но я также использую его для лондонского и нью-йоркского времени (что неверно).

Как рассчитать значение часа летнего времени в других часовых поясах и даты, когда в этих часовых поясах применяется летнее время. Я был бы очень рад увидеть рабочий пример кода JS для этого...

P.S.: Работаю только в среде MS Windows. Эти ОС хранят всю информацию о часовом поясе DST где-то в своих недрах ... можно ли как-то собрать эту информацию через JS или VBScript оттуда (WMI?)?

Заранее спасибо,

Оливер


person Oli R.    schedule 14.08.2013    source источник
comment
проверить stackoverflow.com/questions/ 10087819/   -  person Nicolae Olariu    schedule 14.08.2013


Ответы (1)


Возможно, проверьте эту библиотеку:

http://momentjs.com/timezone/

Похоже, он изначально дает вам то, что вам нужно.

person chug187    schedule 14.08.2013