Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Java / JavaScript


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Java/JavaScript

Выпуск № 202
от 19.07.2006, 17:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 246, Экспертов: 22
В номере:Вопросов: 1, Ответов: 1


Вопрос № 49134: Здравствуйте. У меня две проблемки, которые нужно решить с помощь javascript 1)Мне необходимо определить дату, причем "распихать" в отдельные переменные год, месяц, число. 2)Необходимо определить время в Санкт-Петербурге, невзир...

Вопрос № 49.134
Здравствуйте.
У меня две проблемки, которые нужно решить с помощь javascript
1)Мне необходимо определить дату, причем "распихать" в отдельные переменные год, месяц, число.
2)Необходимо определить время в Санкт-Петербурге, невзирая на то, на каком сервере лежит сайт и откуда на него зашли.

Буду очень признателен за подробный ответ, т.к. мои знания по javascript хотя и не нулевые, но весьма близкие к ним
Отправлен: 14.07.2006, 17:14
Вопрос задал: Кузьма Дмитрий Валерьевич (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: wils0n
Здравствуйте, Кузьма Дмитрий Валерьевич!
1) Это просто. стоит только посмотреть описание класса Date.
2) Здесь позаковыристей будет. Дело в том, что javascript не поддерживает летнее время. То есть если брать за "эталон" времени - время нулевого мердиана, то реальное ленинградское время должно отличаться от него на три часа. С приходом летнего времени стрелки сдвигаются и там, и там, и разница остаётся три часа. Вот только javascript стрелки не переводит. И у него время отличается на четыре часа. Чтоб обойти эту проблему мы высчитываем, евляется ли текущее время летним. И если да, то прибавляем ещё один час.

Вот код:

<html>
<head>
lang="javascript">

function ShowDate()
{
var today = new Date(); // взять текущее время
year = today.getUTCFullYear(); // вытащить из него год. Важно использовать getFullYear(), a не getYear(). Попробуйте и почувствуйте разность
month = today.getUTCMonth(); // вытащить месяц
day = today.getUTCDate(); // число
alert("today is "+day+"."+month+"."+year); // показать всё это
}

function IsSummerTime(date) // функция определяет, является ли время date летним
{
var march = new Date( Date.UTC( date.getUTCFullYear(),2,31 ) );
// начало летнего времени
var begin_st = new Date( Date.UTC( date.getUTCFullYear(),2,31-march.getUTCDay() ) );
var oct = new Date(Date.UTC(date.getUTCFullYear(),9,31));
// конец летнего времени
var end_st = new Date(Date.UTC(date.getUTCFullYear(),9,31-oct.getUTCDay()));

// если date лежит между, то время летнее
if ((date >= begin_st) && (date < end_st)) return 1;
else return 0;
}

function ShowSPBTime()
{
var locale = new Date();
hour = locale.getUTCHours(); // взять время 0-го часового пояса (зимнее)
hour = hour + 3 + IsSummerTime(locale); // прибавить три часа и получить время в Питере. Здесь прибавляется значение функции IsSummerTime. Если время летнее, то прибавится один час
hour = hour % 24; // на случай, если перебрались в след. сутки
m = locale.getMinutes();
s = locale.getSeconds();
alert("Ленинградское время: "+hour+":"+m+":"+s);
}

</script>
</head>
<body onload="ShowDate() || ShowSPBTime();"> <!--// вызываем при загрузке страницы-->
</body>
</html>
---------
Life is like a box with chocolate. You never know what you're gonna get. (c) Forrest Gump's mom
Ответ отправил: wils0n (статус: 5-ый класс)
Ответ отправлен: 16.07.2006, 01:24
Оценка за ответ: 5


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.34 от 01.06.2006
Яндекс Rambler's Top100

В избранное