Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как посчитать прожитые дни? (https://javascript.ru/forum/misc/58279-kak-poschitat-prozhitye-dni.html)

рони 13.09.2015 21:48

makalet,
<script>
  var birthday = '07.09.2005';
  var dd = birthday.split(".");
  var mydate = new Date(+dd[2]+10,dd[1]-1,dd[0]);
  var date = new Date();
  date.setHours(0, 0, 0);
  var test = Math.round((mydate - date) / 864E5)
  document.write("юбилей через " +test + " дней<br>")
</script>
<script>
  var birthday = '07.09.2005';
  var dd = birthday.split(".");
  var mydate = new Date(dd[2],dd[1]-1,dd[0]);
  mydate.setYear(+dd[2]+10);
  var date = new Date();
  date.setHours(0, 0, 0);
  var test = Math.round((mydate - date) / 864E5)
  document.write("юбилей через " +test + " дней<br>")
</script>

makalet 13.09.2015 21:55

рони, а чтобы определить сколько именно лет исполняется?

рони 13.09.2015 22:03

makalet,
гнать циклом пока test не станет положительным

рони 13.09.2015 22:10

makalet,
<script>
  var birthday = '07.09.2005';
  var dd = birthday.split(".");
  var mydate = new Date(dd[2],dd[1]-1,dd[0]);
  var date = new Date();
  date.setHours(0, 0, 0);
  for (var i=0; ; i+=10)  {
  mydate.setYear(+dd[2]+i);
  var test = Math.round((mydate - date) / 864E5);
  if(test > 0) {document.write(i +" лет юбилей через " +test + " дней<br>"); break }
  }

</script>

makalet 13.09.2015 22:21

спасибо

рони 13.09.2015 22:37

makalet,
mydate.setYear(+dd[2]+i);
mydate.setYear(2005+10);
mydate.setYear(2005+20);
далее сами

makalet 13.09.2015 23:09

рони, ясно.

mrt19 27.05.2017 16:40

Рони, а как дописать к вашему примеру, вывод двух ближайших юбилеев.
когда рассчитывается кол-во прожитых дней, мы результат округляем к ближайшим двум тысячным юбилеям (которые будут), и выводим информацию:
ближайший юбилей 14000 дней будет ... марта 2018 года
следующий юбилей 15000 дней будет .... октября 2021 года

рони 27.05.2017 17:02

mrt19,
<script>
  var birthday = '07.09.2005';
  var dd = birthday.split(".");
  var mydate = new Date(dd[2],dd[1]-1,dd[0]);
  var date = new Date();
  date.setHours(0, 0, 0);
  for (var i=0; ; i+=1000)  {
  mydate = new Date(dd[2],dd[1]-1,+dd[0]+i);
  var test = Math.round((mydate - date) / 864E5); document.write(mydate.toLocaleDateString()+" "+i+"<br>");
  if(test > 0) {document.write("ближайший юбилей "+ i +" дней через " +test + " дней " + mydate.toLocaleDateString()+"<br>"); break }
  }
  i+=1000;
  mydate = new Date(dd[2],dd[1]-1,+dd[0]+i);
  test = Math.round((mydate - date) / 864E5);
  document.write("следующий юбилей "+ i +" дней через " +test + " дней " + mydate.toLocaleDateString());
</script>

mrt19 27.05.2017 17:21

Благодарю, Рони ))

Но чтобы эти строки расчёта:

ближайший юбилей 5000 дней через 720 дней 17.05.2019
следующий юбилей 6000 дней через 1720 дней 10.02.2022

интегрировать в ваш первый скрипт в теме.
Дата рождения уже введена при количестве расчёта дней (выводятся дни, как он и делает, а ниже две эти строки)


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