Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> четность/нечетность недели, четность недели на JS 
:(
    Опции темы
ololok
Дата 17.9.2011, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 17.9.2011

Репутация: нет
Всего: нет



Данную тему уже понимали здесь, но всегда показывает Odd(нечетная).

Собственно: Помогите написать скрипт, который будет определять четность или нечетность и сообщать об этом.

Вот моя заготовка, но она ни чего не сообщает.

Код

<html>
<head>
<title>пример, например</title>
</head>
<body>
<script language="Javascript">
var start=getDate("january 1,2011 00:00:01");
var now=getDate();
var razn=(now-start)/604800000;
var numb = razn%2;
If (numb==1) r_or_b = 'четная';
if (numb==0) r_or_b ='нечетная';
document.write(r_or_b);
</script>
</body>
</html>


заранее спасибо


Это сообщение отредактировал(а) ololok - 17.9.2011, 13:41
PM MAIL   Вверх
InfMag
Дата 17.9.2011, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: нет
Всего: 4



ololok, для начала выпиливаем аттрибут language у тега script и вписываем type="text/javascript".
А уже потом, к примеру следующий алгоритм:
  • Высчитываем какой сейчас по счёту день в году, из всех 365-и дней;
  • Потом, если я не ошибся, делим этот день на 7, отрезаем остаток Math.floor();
  • И проверяем полученное число кратности 2.
Верно? С начала нужно понять что делать, а уже потом, — как это будет на JS.
«Пишите не на языке, а с применением языка» © 
PM   Вверх
InfMag
Дата 17.9.2011, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: нет
Всего: 4



Забыл один факт, не всегда ведь с понедельника год начинается)

Добавлено через 1 минуту и 24 секунды
Это всё конечно без учёта, что например в Англии неделя начинается с воскресения.
PM   Вверх
InfMag
Дата 17.9.2011, 18:15 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата



***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: нет
Всего: 4



Накидал без упрощения:
Код

<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=windows-1251" />
    <script type="text/javascript">
    var oddOrEvenWeek = function () {
        var    curDate = new Date(),
            dayShift = 1,
            firstDay = new Date(curDate.getFullYear(), 0, dayShift),
            startYear = new Date(firstDay.getTime()),
            daysInCurYear,
            weekDay = (firstDay.getUTCDay() == 0) ? 7 : firstDay.getUTCDay(); //week day 1-7, 1 is monday, 7 is sunday
        
        while (weekDay > 1) {
            firstDay = new Date(curDate.getFullYear(), 0, (++dayShift));
            weekDay = (firstDay.getUTCDay() == 0) ? 7 : firstDay.getUTCDay();
        }
        
        daysInCurYear = ((curDate.getTime() - startYear.getTime()) / 24 / 60 / 60 / 1000) - (7 - dayShift - 1);
        
        return (Math.floor(daysInCurYear / 7) % 2 == 0) ? 'чётная' : 'не чётная';
    };
    
    alert(oddOrEvenWeek());
    </script>
</head>
</html>

PM   Вверх
ololok
Дата 17.9.2011, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 17.9.2011

Репутация: нет
Всего: нет



InfMag, большое спасибо.
PM MAIL   Вверх
Dimon23
Дата 26.9.2011, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 24.2.2008

Репутация: нет
Всего: нет



На 26.09.2011 показывает, что неделя четная (38). Если посмотреть на календарь:  www.macmax.ru/calendar/?y=2011&fm=1&lm=12&mc=3&ds=1&wn=2&fd=2&lang=ru  то неделя получается нечетная (39). Алгоритм реализован с ошибкой

Это сообщение отредактировал(а) Dimon23 - 26.9.2011, 14:47
PM MAIL   Вверх
Dimon23
Дата 26.9.2011, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 24.2.2008

Репутация: нет
Всего: нет



Вот мой вариант:

Код

function oddweek (stDate) {
        var startDate, now, difference, even_or_odd, info, board;
        now = new Date(stDate);                             // текущая дата
        startDate = new Date(now.getFullYear(), 0, 1);      // дата 01.01.год
        var startDay = startDate.getDay();                  // день недели 0 - воскресенье, 1 - понедельник
        
        difference = Math.round((now-startDate)/ (1000*60*60*24*7));     //604800000); // comment: 604800000=1000millisec*60sec*60min*24hour*7day
        if (startDay <= 4) {difference++;}
        if (now.getDay() == 1) {difference++;}
        difference%2 ? odd_or_even = 'нечетная' : odd_or_even = 'четная';
        info='Идет '+Math.ceil(difference)+' неделя ('+odd_or_even+')';
        $('#year').text(info + " дата: " + formatDate(now, "dd.mm.yyyy"));
    }


Это сообщение отредактировал(а) Dimon23 - 26.9.2011, 15:16
PM MAIL   Вверх
teesync
Дата 26.7.2022, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 26.7.2022

Репутация: нет
Всего: нет




Модератор: Сообщение скрыто.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1115 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.