Как посчитать прожитые дни?
Как посчитать количество прожитых дней через библиотеку datetimepicker? Юзер вводит дату и мы считаем дни в зависимости от текущего года(учитывая еще и 366 дней - выс. год)
http://jsfiddle.net/t00a47qj/4/ |
datetimepicker сколько дней прошло или осталось до даты
makalet,
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title> - jsFiddle demo</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jquery-datetimepicker/2.5.4/jquery.datetimepicker.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-datetimepicker/2.5.4/build/jquery.datetimepicker.full.js"></script>
<script>
$(window).load(function() {
var text = "";
$("#datetimepicker").datetimepicker({
timepicker: false,
lang: "ru",
format: "d.m.Y",
dayOfWeekStart : 1,
onClose: function(c, f) {
c = (new Date(c)).setHours(0, 0, 0);
var a = new Date;
a.setHours(0, 0, 0);
var d = a.getDate(),
e = a.getMonth() + 1,
g = a.getFullYear(),
d = d + "." + e + "." + g,
a = Math.round((a - c) / 864E5),
e = function(a) {
return function(b) {
return a[1 == b % 10 && 11 != b % 100 ? 0 : 2 <= b % 10 && 4 >= b % 10 && (10 > b % 100 || 20 <= b % 100) ? 1 : 2]
}
},
a = (0 == a ? "Сегодня " : 0 < a ? "Прошло " : (a *= -1,
"Осталось ")) + a + " " + e(["день", "дня", "дней"])(a);
text = "Дата рождения: " + f.val() + "<br>Сегодня: " + d + "<br>" + a
}
})
$('#enter').click(function() {$(".info").html(text)})
});
</script>
</head>
<body>
<label for="datetimepicker">Введите дату рождения</label><br>
<input id="datetimepicker" type="text" id="date" /><br>
<input type="button" id="enter" value="Посчитать" /><br>
<span class='info'></span>
</body>
</html>
|
рони, а как сделать это при клике на кнопку по моему примеру?
|
makalet,
создайте переменную в которую будут заносится нужные данные и выводите куда хотите эту переменную - смотрите код выше снова |
рони, а можете объяснить 28 строку?
|
makalet,
стандартный алгоритм склонения подробнее тут http://javascript.ru/forum/misc/3516...tml#post231512 |
рони, а проще написать как-то можно исходя из вашего примера? Все таки хотелось сделать как-то через свой пример вытягивания даты и т.д. Или то плохой вариант?
|
makalet,
так в чём проблема вычесть из одной даты другую и разделить на на миллисекунды за день -- строка 25 это всё что вам нужно. |
рони,
http://jsfiddle.net/t00a47qj/6/ пишет NaN. Переменные |
makalet,
примерно вы написали следущее var test = Math.round((1000000 - 14.09.2015) / 864E5) превратите строку en с числами в Date и тогда вычитайте |
Все, сделал. А как посчитать сколько до НГ осталось( не от ДР, а от текущей даты + через сколько будет круглая дата, напр, 30 лет?
|
Кстати, мой вариант немного не так работает как ваш. Почему?
http://jsfiddle.net/t00a47qj/7/ дата установлена на 07.09.2009. Получается Дней до ДР. 2258 А в вашем примере при выборе такой же даты получается 2198. Как так получилось? |
makalet,
var mydate = new Date(en); этого недостаточно. Цитата:
до нового года нужна дата нового года 30 лет нужна дата рождения + 30 лет поинтересуйтесь Moment.js |
рони, разделитель вроде один и тот же.
http://jsfiddle.net/t00a47qj/8/ Разница в Сегодня 13.9.2015 Дата рождения 07.09.2015 А без подключения moment.js не получится? |
makalet,
.... :( http://jsfiddle.net/t00a47qj/9/ moment.js для примера было -- учебник почитайте для начала |
рони, спасибо, сделал немного иначе. Вроде работает. Помогло с date.setHours(0, 0, 0). Подскажите c НГ. Я распарсил строку, получил данные, но вот не понимаю почему получаю NaN
|
makalet,
дата нового года var date = new Date((new Date).getFullYear()+1, 0, 1, 0, 0, 0, 0 ) http://javascript.ru/forum/project/4...tml#post281738 |
рони, cпасибо большое!! Помогло.
Осталось тогда юбилей сделать( Если родился в 2005, то юбилей в 10 лет будет через n дней в 2015 году, и так далее. Это через цикл делается? |
makalet,
.setYear(2015) |
рони, а можно небольшой примерчик?
|
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,
гнать циклом пока test не станет положительным |
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,
mydate.setYear(+dd[2]+i); mydate.setYear(2005+10); mydate.setYear(2005+20); далее сами |
рони, ясно.
|
Рони, а как дописать к вашему примеру, вывод двух ближайших юбилеев.
когда рассчитывается кол-во прожитых дней, мы результат округляем к ближайшим двум тысячным юбилеям (которые будут), и выводим информацию: ближайший юбилей 14000 дней будет ... марта 2018 года следующий юбилей 15000 дней будет .... октября 2021 года |
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>
|
Благодарю, Рони ))
Но чтобы эти строки расчёта: ближайший юбилей 5000 дней через 720 дней 17.05.2019 следующий юбилей 6000 дней через 1720 дней 10.02.2022 интегрировать в ваш первый скрипт в теме. Дата рождения уже введена при количестве расчёта дней (выводятся дни, как он и делает, а ниже две эти строки) |
datetimepicker юбилей
mrt19,
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>datetimepicker demo</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jquery-datetimepicker/2.5.4/jquery.datetimepicker.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-datetimepicker/2.5.4/build/jquery.datetimepicker.full.js"></script>
<script>
$(window).load(function() {
var text = "";
jQuery.datetimepicker.setLocale('ru');
$("#datetimepicker").datetimepicker({
timepicker: false,
format: "d.m.Y",
dayOfWeekStart: 1,
maxDate: 0,
onClose: function(c, f) {
c = (new Date(c)).setHours(0, 0, 0);
var a = new Date;
a.setHours(0, 0, 0);
var d = a.getDate(),
e = a.getMonth() + 1,
g = a.getFullYear(),
d = d + "." + e + "." + g,
k = Math.round((a - c) / 864E5),
e = function(a) {
return function(b) {
return a[1 == b % 10 && 11 != b % 100 ? 0 : 2 <= b % 10 && 4 >= b % 10 && (10 > b % 100 || 20 <= b % 100) ? 1 : 2]
}
},
k = (0 == k ? "Сегодня " : 0 < a ? "Прошло " : (k *= -1,
"Осталось ")) + k + " " + e(["день", "дня", "дней"])(k);
text = "Дата рождения: " + f.val() + "<br>Сегодня: " + d + "<br>" + k + "<br>";
for (var i = 0;; i += 1000) {
k = Math.round((c - a) / 864E5);
if (k > 0) {
text += "ближайший юбилей " + i + " дней через " + k + " " + e(["день", "дня", "дней"])(k) + " " + (new Date(c)).toLocaleDateString() + "<br>";
break
}
c += 24 * 60 * 60 * 1000 * 1000;
}
i += 1000;
c += 24 * 60 * 60 * 1000 * 1000;
k = Math.round((c - a) / 864E5);
text += "следующий юбилей " + i + " дней через " + k + " " + e(["день", "дня", "дней"])(k) + " " + (new Date(c)).toLocaleDateString();
}
})
$('#enter').click(function() {
$(".info").html(text)
})
});
</script>
</head>
<body>
<label for="datetimepicker">Введите дату рождения</label><br>
<input id="datetimepicker" type="text" id="date" /><br>
<input type="button" id="enter" value="Посчитать" /><br>
<span class='info'></span>
</body>
</html>
|
| Часовой пояс GMT +3, время: 09:31. |