Автор: BUILDER.COM
Нет сомнений в том, что с помощью сценариев JavaScript можно легко отображать местное время на веб-странице, непосредственно просматривая часы пользователя. Но что, если вы хотите отображать время в другом регионе — например, если ваша штаб-квартира находится в другой стране и вы хотите видеть «домашнее» время вместо местного времени?
Для этого необходимо выполнить различные расчеты времени для преобразования местного времени во время назначения. В этой статье объясняется, как выполнить эти расчеты.
Шаг 1:
Первый шаг — узнать местное время. В JavaScript это, безусловно, можно легко сделать, инициализировав объект Data().
// создаем объект Date для текущего местоположения
d = new Date();
Вызвав метод getTime() объекта Data(), вы можете отобразить количество миллисекунд между 1 января 1970 года и текущим временем.
// конвертируем в миллисекунды с 1 января 1970 года
localTime = d.getTime();
Шаг 2.
Затем найдите значение смещения местного времени с помощью метода getTimezoneOffset() объекта Data(); По умолчанию этот метод отображает результат значения смещения часового пояса в минутах, поэтому в предыдущем расчете это значение преобразуется в миллисекунды.
// получаем локальное смещение UTC и преобразуем его в мсек
localOffset = d.getTimezoneOffset() * 60000
Обратите внимание, что отрицательное возвращаемое значение метода getTimezoneOffset() указывает, что местное время предшествует универсальному стандартному времени (UTC), а положительное значение возвращается; Значение указывает местное время после всемирного координированного времени (UTC).
Примечание. Если вам интересно, как я получил коэффициент умножения 60 000, помните, что 1000 миллисекунд равны одной секунде, а одна минута равна 60 секундам. Следовательно, чтобы перевести минуты в миллисекунды, умножьте 60 на 1000, что равно 60 000.
Третий шаг
— сложить местное время и значение смещения местного часового пояса, чтобы получить текущее международное стандартное время (UTC).
// получаем время UTC в мсек
utc = localTime + localOffset
Здесь переменная utc содержит текущее международное стандартное время (UTC); Однако это время выражается количеством миллисекунд с 1 января 1970 года по настоящее время. Пусть пока это выражается так, поскольку нам еще предстоит провести некоторые расчеты.
Четвертый шаг —
получить международное стандартное время (UTC), затем получить почасовое значение смещения международного стандартного времени (UTC) целевого города, преобразовать его в миллисекунды и добавить международное стандартное время (UTC).
// получаем и добавляем смещение времени UTC пункта назначения
// например, Бомбей
// это UTC + 5,5 часов
offset = 5.5;
Bombay = utc + (3600000*offset).
ПРИМЕЧАНИЕ. Если вам интересно, как я получил 3600000 для умножения; факторов, помните, что 1000 миллисекунд равны одной секунде, а один час равен 3600 секундам. Следовательно, чтобы перевести часы в миллисекунды, умножьте 3600 на 1000, что равно 3600000.
В настоящее время переменная Bombay содержит местное время в Мумбаи, Индия. Это местное время выражается количеством миллисекунд с 1 января 1970 года по настоящее время. Очевидно, что это не имеет смысла, поэтому нам придется провести некоторые расчеты.
Пятый шаг
— инициализировать новый объект Data() и вызвать метод toLocalString() этого объекта. Мы конвертируем значение времени, рассчитанное на предыдущем шаге, в строку даты/времени, понятную каждому.
// конвертируем значение в миллисекундах в дату string
nd = new Date(bombay);
document.writeln("Время в Бомбее: " + nd.toLocaleString() + "<br>");
Преобразование завершено!
Подведя итоги
и разобравшись с вышеописанными шагами, давайте еще раз взглянем на этот сценарий (листинг A), который создает компактную пользовательскую функцию CalcTime(), которая выполняет все вычисления и возвращает значение времени.
Список A
<html>
<head>
<script Language="JavaScript">
// функция для расчета местного времени
// в другом городе
// с учетом смещения UTC города
functioncalcTime(city, offset) {
// создаем объект Date для текущее местоположение
d = новая дата();
// конвертируем в мсек
// добавляем смещение местного часового пояса
// получаем время UTC в мсек
utc = d.getTime() + (d.getTimezoneOffset() * 60000);
// создаем новый объект Date для другого города
// используя указанное смещение
nd = new Date(utc + (3600000*offset));
// возвращаем время в виде строки
return "Местное время в " + city + " равно " + nd.toLocaleString()
}
// получаем
оповещение о времени Бомбея(calcTime('Bombay', '+5.5'));
// получить
оповещение о времени в Сингапуре(calcTime('Сингапур', '+8'));
// получить
оповещение о времени в Лондоне(calcTime('Лондон', '+1'));
</script>
</head>
<body>
< /body>
</html>
Здесь функцияcalcTime() принимает название города и значение смещения его универсального координированного времени (UTC) (в часах). Затем он внутренне выполняет все описанные выше вычисления и возвращает строку, содержащую местное время для этого города.
Вот несколько примеров вывода листинга A.
Местное время Мумбаи — 16:43:51 в понедельник, 1 августа 2005 г.
Местное время Сингапура — 19:13:51 в понедельник, 1 августа 2005 г.
Местное время Лондона — 1 августа 2005 г., понедельник 12:13:51.
В следующий раз, когда вы сядете за написание сценария часового пояса для своей веб-страницы, мы надеемся, что этот сценарий сэкономит вам время. Наслаждаться! !