|
Выводить сообщение с оставшимися днями до определенного числа | ☑ | ||
---|---|---|---|---|
0
Константин536
08.04.15
✎
09:59
|
Здравствуйте. Есть проблемка. Хочу чтобы при достижении определенного числа в месяце, добавлялся месяц и производился отсчет сколько дней осталось до этого числа.
Пример: Процедура ПередНачаломРаботыСистемы(Отказ) ДатаКредита = '20150408'; ДеньКредита = День(ДатаКредита); ТекущийДень = День(ТекущаяДата()); Если ДатаКредита > ТекущаяДата() тогда Сообщить("До оплаты осталось" + " " + (ДеньКредита - ТекущийДень)); КонецЕсли; Если ДеньКредита = ТекущийДень тогда ДатаКредита = ДобавитьМесяц(ДатаКредита, 1); //нужно чтоб из новой даты(20150508) вычитались дни КонецЕсли; КонецПроцедуры |
|||
1
Fish
08.04.15
✎
10:01
|
(0) Ну так и вычитай дни.
|
|||
2
D_E_S_131
08.04.15
✎
10:16
|
1С:Коллектор пишите?
|
|||
3
Господин ПЖ
08.04.15
✎
10:24
|
охота посмотреть чего будет
при ДеньКредита = День('20151231'); ТекущийДень = День('20160101'); .... |
|||
4
butterbean
08.04.15
✎
10:30
|
(0) надо (НачалоДня(ДатаКредита) - НачалоДня(ТекущаяДата())) / 86400
|
|||
5
Константин536
08.04.15
✎
12:07
|
(2) нет, просто захотелось попробовать реализовать такую задачу.
|
|||
6
Константин536
08.04.15
✎
12:08
|
а как быть с тем, что в одном месяце 30 дней, а в другом 31?
|
|||
7
kosts
08.04.15
✎
12:10
|
(2) Систему защиты конфигурации, же
|
|||
8
D_E_S_131
08.04.15
✎
12:15
|
(7) Тогда это круто! Представляю, что там за "конфигурация", если ТС даже операции с датами не освоил. :)
|
|||
9
DrShad
08.04.15
✎
12:17
|
(6) скриптами считай
|
|||
10
DrShad
08.04.15
✎
12:19
|
(function(decl){
decl.rusDeclention = function(single, twin, many, space) { if (!space) { space =''; } var div10 = this % 10; var div100 = Math.floor(this / 10) % 10; var result = many; if (div100!=1) { switch (div10) { case 1:result = single; break; case 2: case 3: case 4: result = twin; break; default: break; } } return this.toString() + space + result; } })(Number.prototype) function generateText(difference) { var days = Math.floor(difference / 86400000); var hours = Math.floor(difference % 86400000 / 3600000); var minutes = Math.floor(difference % 3600000 / 60000); var seconds = Math.floor(difference % 60000 / 1000); return 'До нового года осталось ' + (days?days.rusDeclention('день','дня','дней',' ') + ' ':'') + (hours?hours.rusDeclention('час','часа','часов',' ') + ' ':'') + (minutes?minutes.rusDeclention('минута','минуты','минут',' ') + ' ':'') + (seconds?'и ' + seconds.rusDeclention('секунда','секунды','секунд',' '):''); } $(document).ready( function() { var i=5; var timer = document.createElement('div'); $('h1.forum-title').after(timer); var d=new Date(); var newYear = new Date(d.getFullYear()+1, 0, 1, 0,0,0,0); var lastdifference = newYear - d; timer.innerHTML = generateText(lastdifference); setInterval(function() { d = new Date; var difference = newYear - d; if (lastdifference == difference) return; lastdifference = difference; timer.innerHTML = generateText(difference); },500); } ) |
|||
11
Новый участник
08.04.15
✎
12:22
|
Вычитай даты, выводи "вам осталось 100500 секунд". Не забудь про КонецДня().
|
|||
12
Константин536
08.04.15
✎
12:34
|
вот такой код вышел:
Процедура ПередНачаломРаботыСистемы(Отказ) ДатаКредита = '20150409'; ДеньКредита = День(ДатаКредита); ТекущийДень = День(ТекущаяДата()); Если ДатаКредита > ТекущаяДата() тогда Сообщить("До оплаты осталось" + " " + (ДеньКредита - ТекущийДень) + " " + "суток"); КонецЕсли; Если День(ТекущаяДата()) = ДеньКредита и Месяц(ТекущаяДата()) = Месяц(ДатаКредита) тогда Сообщить("Сегодня последний день оплаты" + ", " + "следующая дата" + " " + (Формат(ДобавитьМесяц(ДатаКредита, 1), "ДЛФ=DD"))); КонецЕсли; Если ДеньКредита < ТекущийДень тогда ДатаКредита = ДобавитьМесяц(Датакредита, 1); Сообщить("До оплаты осталось"+ " " +(День(КонецМесяца(ТекущаяДата())) - ТекущийДень + ДеньКредита) + " " + "суток"); КонецЕсли; КонецПроцедуры |
|||
13
kosts
08.04.15
✎
12:39
|
(12) на следующий год опять появится сообщение?
|
|||
14
kosts
08.04.15
✎
12:52
|
В первую очередь надо писать понятный код, оптимизация на втором месте.
Как не идеальный вариант. Не тестировал, просто подумалось. Потом в сообщениях не делай расчетов, делай заранее.
|
|||
15
kosts
08.04.15
✎
12:58
|
ПериодВыдачиСообщенияНачало = ДатаОплаты - 30*24*60*60;
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |