Создать ответ 
День недели по определенному часовому поясу
Автор Сообщение
Crushtest Не на форуме
Ефрейтор
*

Сообщений: 11
У нас с: Oct 2015
Сообщение: #1
День недели по определенному часовому поясу
Добрый день! Копаю, копаю, но не могу найти информацию по теме, а в javascript я очень не силен.

В общем, есть код:
Код:
<div id="spec_block">
<div>ВС</div>
<div>ПН</div>
<div>ВТ</div>
<div>СР</div>
<div>ЧТ</div>
<div>ПТ</div>
<div>СБ</div>
</div>
<script>
document.getElementById ('spec_block').getElementsByTagName ('DIV') [new Date ().getDay ()]. style.display = 'block';
</script>

С помощью него я вывожу различную информацию о ежедневных событиях. Одна проблема - этот код привязан к часовому поясу пользователя, и тем более, мне нужна смена событий по другому часовому поясу - PDT (-7)

Скомуниздил код с сайта с часовыми поясами - но, опять-таки, для меня яваскрипт не сильно дается пока. Может, подскажете, что нужно?
Код:
var text_time = document.getElementById('texttime');
var text_time2 = document.getElementById('texttime2');

function currentTime(p)
{
    var localdate = new Date();
    var localtime = localdate.getTime();
    var localoffset = localdate.getTimezoneOffset()*60000;
    var UTCtime = localtime + localoffset;
    targettime = UTCtime + (3600000 * p);
    c_time = new Date(targettime);
    return c_time;    
}

var current_time = currentTime(roffset1);
var current_time2 = currentTime(roffset2);

refreshTime = function(){
    current_time = currentTime(roffset1);
    var dstr = current_time.toDateString();
    var tstr = current_time.toTimeString();
    dstr = dstr.replace(/Mon/i, "Monday,");
    dstr = dstr.replace(/Tue/i, "Tuesday,");
    dstr = dstr.replace(/Wed/i, "Wednesday,");
    dstr = dstr.replace(/Thu/i, "Thursday,");
    dstr = dstr.replace(/Fri/i, "Friday,");
    dstr = dstr.replace(/Sat/i, "Saturday,");
    dstr = dstr.replace(/Sun/i, "Sunday,");
    var elems = tstr.split(" ");    
    var tstr = elems[0];    

    var  elems2 = tstr.split(":");
    var  h = elems2[0];
    if (h != 0) h = h.replace(/^0/,'');
    var flag=0;
    var clr="blue";
    if (h > 21 || h < 7) {clr="black";}
    else if ((h >=9 && h<=17)) {clr="red";}
    if (h > 12) {h = h - 12; flag=1;}
    if (h == 12) {flag=1;}
    if (flag == 0) tstr = h + ":" + elems2[1] + ":" + elems2[2] + " AM";
    else if (flag == 1) tstr = h + ":" + elems2[1] + ":" + elems2[2] + " PM";
    
    var str = "<font style=\"font-size:17px;\"><table><tbody><tr height=5></tr>";
    str += "<tr><td width=300 align=center><font color=black>" + dstr + "</font></td></tr><tr height=5></tr>";
    str += "<tr><td width=300 align=center><font color=" + clr + " style=\"font-size:22px;\">" + tstr + "</font></td></tr></tbody></table>";
    text_time.innerHTML = str;
};

flash = function(){
    refreshTime();
};

refreshTime2 = function(){
     current_time2 = currentTime(roffset2);
    var dstr2 = current_time2.toDateString();
    var tstr2 = current_time2.toTimeString();
    dstr2 = dstr2.replace(/Mon/i, "Monday,");
    dstr2 = dstr2.replace(/Tue/i, "Tuesday,");
    dstr2 = dstr2.replace(/Wed/i, "Wednesday,");
    dstr2 = dstr2.replace(/Thu/i, "Thursday,");
    dstr2 = dstr2.replace(/Fri/i, "Friday,");
    dstr2 = dstr2.replace(/Sat/i, "Saturday,");
    dstr2 = dstr2.replace(/Sun/i, "Sunday,");
    var elems = tstr2.split(" ");    
    var tstr2 = elems[0];

    var  elems2 = tstr2.split(":");
    var  h = elems2[0];
    if (h != 0) h = h.replace(/^0/,'');
    var flag=0;
    var clr="blue";
    if (h > 21 || h < 7) {clr="black";}
    else if ((h >=9 && h<=17)) {clr="red";}
    if (h > 12) {h = h - 12; flag=1;}
    if (h == 12) {flag=1;}
    if (flag == 0) tstr2 = h + ":" + elems2[1] + ":" + elems2[2] + " AM";
    else if (flag == 1) tstr2 = h + ":" + elems2[1] + ":" + elems2[2] + " PM";
    
    var str2 = "<font style=\"font-size:17px;\"><table><tbody><tr height=5></tr>";
    str2 += "<tr><td width=300 align=center><font color=black>" + dstr2 + "</font></td></tr><tr height=5></tr>";
    str2 += "<tr><td width=300 align=center><font color=" + clr + " style=\"font-size:22px;\">" + tstr2 + "</font></td></tr></tbody></table>";
    text_time2.innerHTML = str2;
};

flash2 = function(){
    refreshTime2();
};

flash();
flash2();

window.setInterval(flash, 3000);
window.setInterval(flash2, 3000);

Вот совет дали - но я так и не понял, опять-таки как прикрутить
Код:
d=new Date()
time_zone=d.getTimezoneOffset()
31.10.2015 01:11:30
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #2
RE: День недели по определенному часовому поясу
Изложите подробно, что Вам нужно сделать. По приведенным Вами частям кода трудно догадаться, что требуется. Не совсем понятно откуда и что Вы выводите.
31.10.2015 17:12:29
Найти все сообщения Цитировать это сообщение
Crushtest Не на форуме
Ефрейтор
*

Сообщений: 11
У нас с: Oct 2015
Сообщение: #3
RE: День недели по определенному часовому поясу
(31.10.2015 17:12:29)Admin писал(а):  Изложите подробно, что Вам нужно сделать. По приведенным Вами частям кода трудно догадаться, что требуется. Не совсем понятно откуда и что Вы выводите.

Самый первый это мой код - он показывает, какой сегодня день недели. Мне же нужно, чтобы он показывал какой день недели на нужном мне часовом поясе.
Я так понял, это делается через getUTCDay () - но с небольшой корректировкой.
Нужный мне часовой пояс -7 PDT.
31.10.2015 21:09:23
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #4
RE: День недели по определенному часовому поясу
Что-то уже сам начал путаться, сколько разница между -7 PDT и Московским временем (UTC+0400)? Вроде как 11 часов, ну да ладно, сами подкорректируете скрипт если что:

Код:
<div id="spec_block">
<div>ВС</div>
<div>ПН</div>
<div>ВТ</div>
<div>СР</div>
<div>ЧТ</div>
<div>ПТ</div>
<div>СБ</div>
</div>
<script>
d=new Date();
d.setMinutes(d.getMinutes()-420+d.getTimezoneOffset());
document.getElementById ('spec_block').getElementsByTagName ('DIV') [d.getDay()].style.display = 'block';
</script>

В строчке d.setMinutes(d.getMinutes()-420+d.getTimezoneOffset());,
-420 - соответствует смещению на 420 минут (7 часов) от текущего времени, а d.getTimezoneOffset() - корректировка текущего времени относительно Гринвича (для Москвы -240 минут).

В результате, если Вы находитесь в Москве, то разница во времени для определения дня недели будет -11 часов.
31.10.2015 22:39:59
Найти все сообщения Цитировать это сообщение
Crushtest Не на форуме
Ефрейтор
*

Сообщений: 11
У нас с: Oct 2015
Сообщение: #5
RE: День недели по определенному часовому поясу
А если поменять getDay на getUTCDay - то мне надо только разницу по гринвичу шлепнуть? -420.
Просто чтобы у всех где бы они не были показывало только это время?
31.10.2015 23:02:26
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #6
RE: День недели по определенному часовому поясу
Вроде наоборот, надо будет оставить разницу -7 PDT (вычитание от текущего времени 420 минут), т.к. getUTCDay - выведет день по Гринвичу.
31.10.2015 23:56:08
Найти все сообщения Цитировать это сообщение
Crushtest Не на форуме
Ефрейтор
*

Сообщений: 11
У нас с: Oct 2015
Сообщение: #7
RE: День недели по определенному часовому поясу
Т.е. вот так:
Код:
<div id="spec_block">
<div>ВС</div>
<div>ПН</div>
<div>ВТ</div>
<div>СР</div>
<div>ЧТ</div>
<div>ПТ</div>
<div>СБ</div>
</div>
<script>
d=new Date();
d.setMinutes(d.getMinutes()-420);
document.getElementById ('spec_block').getElementsByTagName ('DIV') [d.getUTCDay()].style.display = 'block';
</script>
?
01.11.2015 00:54:09
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #8
RE: День недели по определенному часовому поясу
Получается что да.

Если рассмотреть скрипт, то сначала мы получает текущую дату и время, потом делаем смещение данной даты на минус семь часов (-420 минут) и далее получаем номер дня недели без учета текущего часового пояса (по Гринвичу) при помощи getUTCDay.
Как то так.
01.11.2015 13:34:07
Найти все сообщения Цитировать это сообщение
Crushtest Не на форуме
Ефрейтор
*

Сообщений: 11
У нас с: Oct 2015
Сообщение: #9
RE: День недели по определенному часовому поясу
Да, до этого мой html-льный мозг допер. Спасибо Вам огромное! :-)
01.11.2015 13:47:26
Найти все сообщения Цитировать это сообщение
Создать ответ 


Переход:


Пользователи просматривают эту тему: 1 Гость(ей)


LiveInternet
© Copyright 2011-2024 by UsefulScript.ru