Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Московское время.. (https://javascript.ru/forum/misc/11924-moskovskoe-vremya.html)

i-want 21.09.2010 15:35

Московское время..
 
Помогите с кодом. Здесь всё подробно описано http://forum.wen.ru/?p=3&f=10&t=76259&w=htm
ЗЫ: Я лишь недавно сурьёзно заинтересовался JavaScript, поэтому могу не понимать многих, на Ваш взгляд, банальных вещей.

Sweet 21.09.2010 16:06

Цитата:

Сообщение от i-want
Я лишь недавно сурьёзно заинтересовался JavaScript

Если сурьезно, то вот ссылка - изучай методы Date и вникай

i-want 21.09.2010 16:26

Эти я уже более-менее изучил.. get/set, ничего сложного:) Вопрос в том, как посчитать, а точнее занести в массив числовые значения? Кавычки, как я убедился, удалять - не вариант..

i-want 21.09.2010 16:31

Хм.. Перевести в милисекунды Date.pars'ом, посчитать, перевести обратно?

i-want 21.09.2010 18:02

Что-то я бред несу.. Не для того сей парс создан.. Попробую шоль с set'ами побаловаться..

i-want 23.09.2010 18:22

Ну вот посмотрите, что получилось..
function last_sat (a) {
var date = new Date(new Date().getYear,a,31)
var day = 30 - date.getDay()
date.setMonth(a,day)
return date
}
var now = new Date()
var gmt = (-(
now.getTimezoneOffset())
) / 60
var a = last_sat(2)
var b = last_sat(9)
var h = now.getHours()
if (h<gmt-4) {
var h = 24 + h
}
if (now>a && now<b) {
var h = h - (gmt-4)
}
else {
var h = h - (gmt-3)
}
var m = now.getMinutes()
document.write ('Московское время: '+h+' часов(a) '+m+' минут(ы)')
Всё работает как задумано,кроме этой части кода
var h = now.getHours()
if (h<gmt-4) {
var h = 24 + h
}
if (now>a && now<b) {
var h = h - (gmt-4)
}
else {
var h = h - (gmt-3)
}
Меняя произвольно дату на локалхосте убедился, что работает только else.. Почему? И как изменить эту часть, чтобы всё исполнялось, как нужно (т.е. правильно исполнялось условие с выбором действия с переменной h и увеличение h, если нужно).. Уже часа два мучаюсь..

Sweet 23.09.2010 18:44

На форуме есть форматирование. Без него код смотрится убого и трудноусвояемым.

i-want 23.09.2010 21:15

Убого гг) Плох тот программист, который не может в коде без подсветки разобратся.. Ну вот оно

function last_sat (a) {
var date = new Date(new Date().getYear,a,31)
var day = 30 - date.getDay()
date.setMonth(a,day)
return date
}
var now = new Date()
var gmt = (-(
now.getTimezoneOffset())
) / 60
var a = last_sat(2)
var b = last_sat(9)
*!*
var h = now.getHours()
if (h<gmt-4) {
var h = 24 + h
}
if (now>a && now<b) {
var h = h - (gmt-4)
}
else {
var h = h - (gmt-3)
}
*/!*
var m = now.getMinutes()
document.write ('Московское время: '+h+' часов(a) '+m+' минут(ы)')

Gvozd 23.09.2010 21:43

Цитата:

Сообщение от i-want
Плох тот программист, который не может в коде без подсветки разобратся..

ага, а еще плох нейрохирург, который не может провести операцию без микроскопа.
не пишите глупостей!
и, кстати реально плох тот программист, который совершенно не пользуется табуляцией.
также как и тот, который не может отладить свою программу такого маленького объема.

Это я к тому, что отлаживать за вас никто не будет
это элементарнейшее действие(для данного примера)

Sweet 23.09.2010 22:21

Цитата:

Сообщение от i-want
Плох тот программист, который не может в коде без подсветки разобратся

Вопрос не в том, чтобы разобраться, а в эстетике. Лично мне подсвеченный код просто более приятен глазу. А если про этот форум, то без подсветки код реально нечитаем...

i-want 24.09.2010 12:39

Ну я даже не знаю.. Привык без подсветки.. Ну дык по коду ничего дельного не скажете?

i-want 24.09.2010 12:40

Гвоздь, и, пожалуй, не забывай, что я ещё учусь..

Gvozd 24.09.2010 14:07

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

рони 24.09.2010 17:07

i-want,
функция last_sat (a) неверно устанавливается год
function last_sat (a) {
var date = new Date(new Date().getFullYear(),a,31)
var day = 31 - date.getDay()
date.setMonth(a,day)
return date
}


или если учитывать и час перевода часов то можно такой вариант:
<script language="JavaScript" type="text/javascript">
function time_set(e, f) {
    var c = new Date;
    c.setMonth(e, 31);
    c.setMonth(e, 31 - c.getDay());
    c.setHours(f, 0, 0, 0);
    return c
}
var d = new Date,
    a = time_set(2, 2),
    b = time_set(9, 3);
d.setFullYear(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate());
d.setHours(d.getUTCHours() + 3);
d > a && d < b && d.setHours(d.getHours() + 1);
var h = d.getHours(),
    m = d.getMinutes();
document.write ('Московское время: '+h+' часов(a) '+m+' минут(ы)');
</script>

i-want 25.09.2010 07:42

Рони, ход твоей мысли ясен.. Но возникает один вопрос.. Разве это
d > a && d < b && d.setHours(d.getHours() + 1);
не нуждается в if'е? То есть
if (d > a && d < b) {
d.setHours(d.getHours() + 1)
}
Или же можно опускать условные конструкции?

i-want 25.09.2010 07:46

В целом, спасибо, помог:)


Часовой пояс GMT +3, время: 22:49.