Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   простой номер по порядку (https://javascript.ru/forum/css-html/69986-prostojj-nomer-po-poryadku.html)

ksa 02.08.2017 10:10

Цитата:

Сообщение от laimas (Сообщение 460351)
date.getDay() возвратит день недели: 0 - воскресенье, 6 - суббота. Сравнивайте возвращаемое с двумя этими значениями если суббота тоже не рабочий день или только булево значение возвращаемого. Соответственно от результата проверки корректируйте номер на сутки/двое.

Да он потом еще вспомнит про праздничные дни и про переносы выходных дней... :D

Dilettante_Pro 02.08.2017 10:13

laimas,
Цитата:

Сообщение от laimas
корректируйте номер на сутки/двое.

Корректировать не получится - нужно помнить предыдущий результат, т.к там уже тоже были выходные, который нужно хранить на сервере и обновлять обязательно каждые сутки один раз.
Проще каждый раз вычислять заново - крутить цикл от стартовой даты

helish_88 02.08.2017 10:19

Цитата:

Сообщение от Dilettante_Pro (Сообщение 460353)
helish_88,

В этом случае это уже не совсем простой номер. Его тогда нужно вычислять от стартовой даты с наращиванием счетчика в зависимости от дней недели

я так понял мне этого не сделаю! ладно! Спасибо всем и за это!

helish_88 02.08.2017 10:20

Цитата:

Сообщение от Dilettante_Pro (Сообщение 460356)
laimas,

Корректировать не получится - нужно помнить предыдущий результат, т.к там уже тоже были выходные, который нужно хранить на сервере и обновлять обязательно каждые сутки один раз.
Проще каждый раз вычислять заново - крутить цикл от стартовой даты

интересно :-?

Dilettante_Pro 02.08.2017 10:43

Вот, к примеру, с начала июля
var dateStart = new Date("07/01/2017"),
      dateEnd = new Date(),
      dateCurr = dateStart,
      n = 0;
dateCurr.setHours(0, 0, 0);
dateEnd.setHours(0, 0, 0);

do { 
    if(dateCurr.getDay() != 0 && dateCurr.getDay() != 6) n++;
    dateCurr.setDate(dateCurr.getDate() + 1);
} while(dateCurr < dateEnd);

  alert("n = " + n);

laimas 02.08.2017 11:00

Цитата:

Сообщение от Dilettante_Pro
Корректировать не получится - нужно помнить предыдущий результат

Я понимаю, но если не выпендриваться, то лучше номер выходных дней равен предыдущему дню иди дням, тогда и запоминать ничего не надо. Кроме того, что вообще такое "номер по порядку"? В году 365/366 дней, зная это и текущий год, имеем счетчик уже "с памятью" от 1970 для многих поколений. )

Dilettante_Pro 02.08.2017 11:07

laimas,
Цитата:

Сообщение от laimas
номер выходных дней равен предыдущему дню иди дням, тогда и запоминать ничего не надо.

Что такое - равен предыдущему? Откуда предыдущий, если ничего не запоминать или не считать от какой-то стартовой даты?

laimas 02.08.2017 11:14

Цитата:

Сообщение от Dilettante_Pro
Откуда предыдущий, если ничего не запоминать или не считать от какой-то стартовой даты?

А зачем запоминать, мы и так знаем текущую дату, если это это суббота/воскресенье, значит нужно взять пятницу. Вообще бы сначала лучше выяснить роль этого номера, возможно все эти потуги и напрасны, и решить это можно несколько иначе, естественным путем.

helish_88 02.08.2017 11:19

Цитата:

Сообщение от Dilettante_Pro (Сообщение 460359)
Вот, к примеру, с начала июля
var dateStart = new Date("07/01/2017"),
      dateEnd = new Date(),
      dateCurr = dateStart,
      n = 0;
dateCurr.setHours(0, 0, 0);
dateEnd.setHours(0, 0, 0);

do { 
    if(dateCurr.getDay() != 0 && dateCurr.getDay() != 6) n++;
    dateCurr.setDate(dateCurr.getDate() + 1);
} while(dateCurr < dateEnd);

  alert("n = " + n);

работает же! БОЛЬШОЕ ВАМ СПАСИБО :dance: :agree:


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