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

helish_88 01.08.2017 16:34

простой номер по порядку
 
Добрый день! Мне нужен простой номер по порядку к примеру:
Номер n
и что бы он менялся каждый день! Заранее спасибо!

Dilettante_Pro 01.08.2017 17:01

var today = new Date() ;
today = Math.floor(today.getTime()/86400000) - 17378 ;
alert (today);


Завтра будет 2

рони 01.08.2017 17:10

helish_88,
https://learn.javascript.ru/datetime
<script>
  var mydate = new Date("07/31/2017");
  var date = new Date();
  date.setHours(0, 0, 0);
  var n = Math.round((date - mydate) / 864E5)
  document.write("n = " + n)
</script>

j0hnik 01.08.2017 17:48

var date = new Date("08/01/2017");
var now = new Date();
var num = Math.floor((now-date)/86400000);
alert(num); // +1 каждый день

helish_88 02.08.2017 08:40

Всем спасибо! Я попробую,я забыл,мне еще надо что бы номер менялся только в рабочие дни а на выходные нет! К примеру в понедельник будет номер 1,в пятнице номер 5 а в след понедельник номер 6 а не номер 8

helish_88 02.08.2017 09:18

Цитата:

Сообщение от рони (Сообщение 460303)
helish_88,
https://learn.javascript.ru/datetime
<script>
  var mydate = new Date("07/31/2017");
  var date = new Date();
  date.setHours(0, 0, 0);
  var n = Math.round((date - mydate) / 864E5)
  document.write("n = " + n)
</script>

все работает! мне еще надо что бы номер менялся только в рабочие дни а на выходные нет! К примеру в понедельник будет номер 1,в пятнице номер 5 а в след понедельник номер 6 а не номер 8!!!

laimas 02.08.2017 10:07

Цитата:

Сообщение от helish_88
надо что бы номер менялся только в рабочие дни

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

ksa 02.08.2017 10:08

Цитата:

Сообщение от helish_88
я забыл,мне еще надо что бы номер менялся только в рабочие дни а на выходные нет

Это последнее, что ты забыл? :D

Dilettante_Pro 02.08.2017 10:09

helish_88,
Цитата:

Сообщение от helish_88
мне еще надо что бы номер менялся только в рабочие дни а на выходные нет! К примеру в понедельник будет номер 1,в пятнице номер 5 а в след понедельник номер 6 а не номер 8!!!

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

helish_88 02.08.2017 10:09

Цитата:

Сообщение от ksa (Сообщение 460352)
Это последнее, что ты забыл? :D

да. Это все. Я от вас отстану :)

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, время: 14:51.