Обратный отсчет от даты
Здравствуйте! помогите пожалуйста, мне нужно чтоб счетчик отсчитывал указанное католичество дней, от даты указанной!
То есть, дата 01.01.2015 мне нужно чтоб он отсчитал к примеру 30 дней и остановился! каждый день типа осталось 29 дней, на следующий день 28 дней, итд. при перегрузке страницы не менял свои значения! Формат даты чтоб был 01.(Число) 01.(Месяц) 2015.(год) На странице будет несколько таких счетчиков, нужно чтоб он именно от даты указанной плясал. а не по id счетчика... Огромное спасибо.. Есть какйто счетчик но не подходит считаем вперед и формат даты не тот((( <SCRIPT language=JavaScript> d0 = new Date('August 01, 2015'); // дата запуска сайта (месяц должен быть на английском!) d1 = new Date(); dt = (d1.getTime() - d0.getTime()) / (1000*60*60*24); document.write(' ' + Math.round(dt) + '-й день'); // счетчик дней </SCRIPT> |
Что не кто не знает?
Или может не поняли? Все скрипты ведут отсчет до даты! а мне нужно чтоб ОТ даты отсчитал 30 дней и стал, формат даты 01.01.2015 |
Ярче пример!
Мужик арендует резиновую бабу! мол Арендовано 01.01.2015 до конца аренды осталось 30 дней, на следующий 29 дней, итд. Скрипт сайта ест формат даты 01.01.2015. и не до какой то даты! а 30 дней ОТ даты аренды бабы... |
Вот вроди такого, как формат даты сделать 01.01.2015 ? через точку?
<script type="text/javascript"> var data = "12/13/2016"// "месяц/день/год" начало отсчёта document.write(10-1*Math.floor((new Date()-new Date(data))/(24*60*60*1000))) </script> |
12.13.2016 в таком виде приходит дата?? Если да, то что мешает отредактировать ее?
var data = "12.13.2016".replace(/\./g, '/'); alert(data); |
Цитата:
|
Цитата:
alert(data);Это убрал потому как какое то уведомление постоянно появляется оно мне не нужно! ----------------------------------------------------- <script type="text/javascript"> var data = "13.08.2015".replace(/\./g, '/');// "месяц/день/год" начало отсчёта document.write(30-1*Math.floor((new Date()-new Date(data))/(24*60*60*1000))) </script> В таком ? сегодняшняя дата, должно показывать 30 дней осталось, а показывает 178 Дата приходит в формате ДЕНЬ.МЕСЯЦ.ГОД нужно именно так! и еще приходит и время, как с ним быть? мне оно не нужно! но формат приходит такой 13.08.2015 12:40 вот как мне это все слепить? |
function dateDiff(fromDate, daysToEnd) { // [dd, mm, yyyy, hh, mm] fromDate = fromDate.replace(/[\.\s\:]/g, '/').split('/'); // 86400000 - сутки var daysToEnd = daysToEnd * 86400000; // создаем дату в формате (год, месяц, день).setHours(часы, минуты) var start = new Date(fromDate[2], fromDate[1] - 1, fromDate[0]).setHours(fromDate[3], fromDate[4]) + daysToEnd, end = Date.now(); return Math.round((start - end) / 86400000); } alert(dateDiff('13.08.2015 13:00', 30)); p.s я лишь учусь, не гоните на меня особо=) бу.. |
Цитата:
А как менять с 30 суток ? на 540 дней нужно!!! и вот так ? Не работает! не показывает ничего вообще <script type="text/javascript"> function dateDiff(fromDate, daysToEnd) { // [dd, mm, yyyy, hh, mm] fromDate = fromDate.replace(/[\.\s\:]/g, '/').split('/'); // 86400000 - сутки var daysToEnd = daysToEnd * 86400000; var start = new Date(fromDate[2], fromDate[1] - 1, fromDate[0]).setHours(fromDate[3], fromDate[4]) + daysToEnd, end = Date.now(); console.log(Math.round((start - end) / 86400000)); } dateDiff('13.08.2015 13:00', 540); </script> |
magnatan,
// Особое внимание - уделите этой строке dateDiff('13.08.2015 13:00', 540) p.s разберетесь, ок, не разберетесь ..... помните, вы сюда пришли за помощью, а не "требовать", вам никто ничем не обязан. |
Цитата:
<script type="text/javascript"> function dateDiff(fromDate, daysToEnd) { // [dd, mm, yyyy, hh, mm] fromDate = fromDate.replace(/[\.\s\:]/g, '/').split('/'); // 86400000 - сутки var daysToEnd = daysToEnd * 86400000; var start = new Date(fromDate[2], fromDate[1] - 1, fromDate[0]).setHours(fromDate[3], fromDate[4]) + daysToEnd, end = Date.now(); return Math.round((start - end) / 86400000); } alert(dateDiff('13.08.2015 13:00', 30)); </script> Так какое то уведомление выскакивает в браузере, но на странице ничего не отображается ((( |
magnatan, если вы пришли за "помощью", то просите помощи, а не готовых решний.
p.s уведомление в браузере - это и есть остаток дней. https://learn.javascript.ru/uibasic |
Цитата:
|
magnatan, гуглите
// это нужно выводить. dateDiff('13.08.2015 13:00', 30); ибо так вы не научитесь, а если и не хотите научится, то лучше на фриланс идите, там вам все сделают. |
Цитата:
<script type="text/javascript"> function dateDiff(fromDate, daysToEnd) { // [dd, mm, yyyy, hh, mm] fromDate = fromDate.replace(/[\.\s\:]/g, '/').split('/'); // 86400000 - сутки var daysToEnd = daysToEnd * 86400000; var start = new Date(fromDate[2], fromDate[1] - 1, fromDate[0]).setHours(fromDate[3], fromDate[4]) + daysToEnd, end = Date.now(); return Math.round((start - end) / 86400000); } document.write (dateDiff('13.08.2015 13:00', 540)); </script> СПАСИБО!!! ВАМ ОГРОМНОЕ!!! |
Цитата:
АНЕ ВСЕ НОРМ! СПАСИБО ТО Я ОШИБСЯ |
Делать было нечего, мб понадобится =)
/** * @param {[string]} fromDate [Дата, от которой нужно начинать отсчет дней. Образец - 13.08.2015 13:00] * @param {[number]} daysToEnd [Кол-во дней] * @return {[object]} [годы, месяцы, дни, часы, минуты, секунды] */ function dateDiff(fromDate, daysToEnd) { // [dd, mm, yyyy, hh, mm] fromDate = fromDate.replace(/[\.\s\:]/g, '/').split('/'); // 86400000 - сутки var daysToEnd = daysToEnd * 86400000; // start = new Date(год, месяц, день).setHours(часы, минуты) var start = new Date(fromDate[2], fromDate[1] - 1, fromDate[0]).setHours(fromDate[3], fromDate[4]) + daysToEnd, end = Date.now(), diff = (start - end) / 86400000; var years = diff / 365, months = (years - Math.floor(years)) * 12, days = (months - Math.floor(months)) * 30, hours = (days - Math.floor(days)) * 24, minutes = (hours - Math.floor(hours)) * 60, seconds = (minutes - Math.floor(minutes)) * 60; return { years: Math.floor(years), months: Math.floor(months), days: Math.floor(days), hours: Math.floor(hours), minutes: Math.floor(minutes), seconds: Math.floor(seconds) }; } /** * ВОТ ТАК ВОТ ИСПОЛЬЗОВАТЬ */ var myDataDiff = dateDiff('13.08.2015 13:00', 540); // сколько осталось лет myDataDiff.years; // сколько осталось месяцев myDataDiff.months; // сколько осталось дней myDataDiff.days; // сколько осталось часов myDataDiff.hours; // сколько осталось минут myDataDiff.minutes; // сколько осталось секунд myDataDiff.seconds; /** * Это лишь пример, на него даже не смотрите (строка ниже) */ alert(JSON.stringify(myDataDiff).replace(/[\{\}\"]/g, '').replace(/\,/g, '\r\n')); |
Вариант:
//Установка: <script type="text/javascript"> //Установка счетчиков: function addСount(str,del) { var stor = window.localStorage; var Tday = 1000*60*60*24; //День в ms; str=str.split(','); if(str.length!=4) return false; var arr; if((arr=str[2].split('.')).length!=3) return false; str = str[0]+','+str[1]+','+ str[2]+','+(+new Date(arr[2],arr[1]-1,arr[0])+str[3]*Tday); var bound = ';\n'; //Разделитель записей; var strg = stor["coutArray"];//strg='' if(!!strg)strg = strg.replace(str+bound,''); if(del){ stor["coutArray"] = strg; return [true, "Запись удалена"];} if(!strg){strg='';stor["coutArray"]='';} stor["coutArray"]= strg + str+ bound; return stor["coutArray"]; }; //Формат данных: //Имя, уточняющая запись, Дата отсчета, Дельта T(дней)// var newCount = "Васе,до конца соместной жизни,08.08.2015,30"; addСount(newCount); var newCount = "Диме,до завершения погашения ипотеки,02.08.2015,25"; addСount(newCount); var newCount = "Коле,до конца аренды резиновой бабы,17.08.2015,18"; alert(addСount(newCount)) </script> //Вывод результов: <div id="out-count-write"></div> <script type="text/javascript"> //Вывод результов счетчиков: function writeStorCount() { var last_Phrase = " - Ваше время Истекло!" var stor = window.localStorage,Tday = 1000*60*60*24,bound = ';\n'; var strg = stor["coutArray"],arrCount,i; if(!strg) return false; arrCount = strg.split(bound); var lng = arrCount.length - 1; for(i=0; i<lng; i++){ var arr = arrCount[i].split(',');//alert(arr) var delta = parseInt((+arr[3]-(+new Date()))/Tday); if(delta<0) return false; var test = delta%10; var day='дней'; if(test==1)day='дeнь';if(test>1&&test<5)day='дня'; if(delta>10&&delta<21)day='дней'; var str = arr[0]+' '+arr[1]+ ' осталось '+ delta +' '+ day + '<br>'; if(delta==0)str = arr[0] + last_Phrase + '<br>'; document.getElementById('out-count-write').innerHTML+=str; } }; writeStorCount() </script> |
Часовой пояс GMT +3, время: 07:48. |