|
Как посчитать число месяцев между ДатаНачало и ДатаКонца? | ☑ | ||
---|---|---|---|---|
0
Викуся
07.11.08
✎
13:13
|
|
|||
1
GenV
07.11.08
✎
13:15
|
(0) С такими интересами сначала фотку просить будут :))
|
|||
2
Irbis
07.11.08
✎
13:15
|
В пределах одного календарного года? Уточни условия задачи.
|
|||
3
Irbis
07.11.08
✎
13:15
|
(1) Не даст. В юморе пол автора обсуждают...
|
|||
4
and2
07.11.08
✎
13:16
|
"ВЫБРАТЬ
| РАЗНОСТЬДАТ(&ДатаН, &ДатаК, МЕСЯЦ) КАК Разность" |
|||
5
Викуся
07.11.08
✎
13:17
|
(2)вообще может быть разные года.
|
|||
6
Викуся
07.11.08
✎
13:18
|
(4)а без запроса если?
|
|||
7
Serg_1960
07.11.08
✎
13:18
|
Если в запросе, то РАЗНОСТЬДАТ(ДатаКонца,ДатаНачало,МЕСЯЦ) - возвращает ЧИСЛО - количество полных месяцев
|
|||
8
Дуб
07.11.08
✎
13:20
|
(6) а без запроса - в цикле НачалоМесяца(), пока не получится меньше первой даты..
Может, поизвратнее что-нить есть ещё.. |
|||
9
Викуся
07.11.08
✎
13:21
|
(8)это долго
|
|||
10
Irbis
07.11.08
✎
13:21
|
Встроенные функции языка
Месяц (Month) Синтаксис: Месяц(<Дата>) Параметры: <Дата> (обязательный) Тип: Дата. Исходная дата. Возвращаемое значение: Тип: Число. Месяц в указанной дате. Описание: Определяет месяц в указанной дате. Пример: см. пример для метода День() Только все равно не ясно по условиям задачи между 30.04 и 01.05 сколько месяцев? |
|||
11
Дуб
07.11.08
✎
13:21
|
(9) это - быстро ;)
|
|||
12
GenV
07.11.08
✎
13:22
|
(8) Да, в принципе простой формулой через Год и Месяц
|
|||
13
and2
07.11.08
✎
13:22
|
(6) а зачем?
|
|||
14
Викуся
07.11.08
✎
13:22
|
Месяц(ДатаНачало)-Месяц(ДатаКонца)?
|
|||
15
Викуся
07.11.08
✎
13:24
|
(13) чтобы посчитать число колоночек, которые будут
|
|||
16
Cheater
07.11.08
✎
13:25
|
(14)
РазницаДат = Месяц(КонДата)-Месяц(НачДата)+1+12*(Год(КонДата)-Год(начДата)); а там уже зависит считаешь ты полные месяцы или нет |
|||
17
Викуся
07.11.08
✎
13:25
|
(16)а если полные,тогда что?
|
|||
18
Cheater
07.11.08
✎
13:26
|
+(16) я не так назвал )) я количество месяцев считаю
|
|||
19
Cheater
07.11.08
✎
13:26
|
(17) если у тебя даты в пределах одного месяца это 0 или 1?
|
|||
20
Викуся
07.11.08
✎
13:27
|
(19)точно тогда значит неполные
|
|||
21
Cheater
07.11.08
✎
13:28
|
(20) (16) как раз для твоего случая
|
|||
22
Викуся
07.11.08
✎
13:29
|
Пасиба).
|
|||
23
eklmn
гуру
07.11.08
✎
13:30
|
ФОТО хдЕ?
|
|||
24
Serg_1960
07.11.08
✎
13:30
|
НачалоМесяца(ДатаКонца)-НачалоМесяца(ДатаНачало) - период в секундах, если не ноль - дели на 60, на 60, на 60, на ... Zzzz
|
|||
25
Викуся
07.11.08
✎
13:34
|
(24)ниии, а как же 31 и 30 дней?
|
|||
26
Serg_1960
07.11.08
✎
13:36
|
(25) Разыграли :) с пятницей Вас
|
|||
27
Helna
07.11.08
✎
13:38
|
(26) И вас! Хороших выходных!
|
|||
28
Serg_1960
07.11.08
✎
13:42
|
Только что придумал, ещё не проверял :)
Разность = РазностьДатМесяц(ДатаНачало,ДатаКонца); Функция РазностьДатМесяц(ДатаНачало,ДатаКонца) Если НачалоМесяца(ДатаНачало) >= НачалоМесяца(ДатаКонца) Тогда Возврат 0; Иначе Возврат 1 + РазностьДатМесяц(ДатаНачало,НачалоМесяца(ДатаКонца)-1); КонецЕсли; КонецФункции |
|||
29
Helna
07.11.08
✎
13:45
|
(28) (16) попроще выглядит, а потом проверить результат на знак и все
|
|||
30
Serg_1960
07.11.08
✎
13:51
|
(28) Мы такие крутые прогеры, - а Вы нам "попроще" :( Мы и так ясно и доступно для народа изложили... Потому как Мы можем и круче загнуть :)
Функция РазностьДатМесяц(ДатаНачало,ДатаКонца) Возврат ?(НачалоМесяца(ДатаНачало) >= НачалоМесяца(ДатаКонца), 0, 1 + РазностьДатМесяц(ДатаНачало,НачалоМесяца(ДатаКонца)-1)); КонецФункции |
|||
31
Cheater
07.11.08
✎
13:55
|
(29) ты случайно не (0)?
|
|||
32
форсмажор
07.11.08
✎
15:27
|
//365.2422 число дней в тропическом году
//30.43655 число месяцев в тропическом году ДК = год(ДатаК)*86400*365.2422 + Месяц(ДатаК)*86400*365.2422/12+День(ДатаК)*86400+Час(ДатаК)*3600+Минута(ДатаК)*60+Секунда(ДатаК); ДН = год(ДатаН)*86400*365.2422 + Месяц(ДатаН)*86400*365.2422/12+День(ДатаН)*86400+Час(ДатаН)*3600+Минута(ДатаН)*60+Секунда(ДатаН); ЧислоМесяцев = (ДК-ДН)/86400/30.43685; сообщить(ЧислоМесяцев); |
|||
33
Serg_1960
07.11.08
✎
15:30
|
(32) Снимаю шляпу... не в знак уважения, а в растерянности - чтобы макушку почесать :)
|
|||
34
форсмажор
07.11.08
✎
15:34
|
//сори 30.43655 число дней в месяце в топическом году )))
|
|||
35
rs_trade
07.11.08
✎
15:36
|
недавно было, тут постил пример из ЗиКа
Как посчитать количество дней в интервале ? |
|||
36
eklmn
гуру
07.11.08
✎
15:44
|
(31) может их две в одном месте? :)
|
|||
37
Serg_1960
07.11.08
✎
15:55
|
(35) Вообще-то и УПП тоже не лыком шито, но так ведь веселее :)
// Процедура вычисляет количество лет, месяцев и дней между двумя датами // // Параметры // Дата1 – дата, первая дата (более поздняя, часто текущая, стаж определяется по состоянию на эту дату) // Дата2 – дата, вторая дата (ранняя дата, с нее начинается "течение" стажа) // Лет – Число, в этот параметр будет записано кол-во лет между двумя датами (Дата1-Дата2) // Месяцев – Число, в этот параметр будет записано кол-во месяцев между двумя датами (Дата1-Дата2) // Дней – Число, в этот параметр будет записано кол-во дней между двумя датами (Дата1-Дата2) // Процедура РазобратьРазностьДат(Дата1, Дата2, Лет = 0, Месяцев = 0, Дней = 0) Экспорт Лет = 0; Месяцев = 0; Дней = 0; Если Дата1 > Дата2 Тогда ВременнаяДата = Дата1; Если День(ВременнаяДата) < День(Дата2) Тогда Дней = (ВременнаяДата - ДобавитьМесяц(ВременнаяДата,-1))/86400; ВременнаяДата = ДобавитьМесяц(ВременнаяДата,-1); КонецЕсли; Если Месяц(ВременнаяДата) < Месяц(Дата2) Тогда ВременнаяДата = ДобавитьМесяц(ВременнаяДата,-12); Месяцев = 12; КонецЕсли; Лет = Макс( Год(ВременнаяДата) - Год(Дата2), 0); Месяцев = Макс(Месяцев + Месяц(ВременнаяДата) - Месяц(Дата2), 0); Дней = Макс(Дней + День(ВременнаяДата) - День(Дата2), 0); // скорректируем отображаемое значение, если "вмешалось" разное количество дней в месяцах Если Дата2 <> (ДобавитьМесяц(Дата1,-Лет*12-Месяцев)-Дней*86400) Тогда Дней = Дней + (День(КонецМесяца(Дата2)) - День(НачалоМесяца(Дата2))) - (День(КонецМесяца(ДобавитьМесяц(Дата1,-1))) - День(НачалоМесяца(ДобавитьМесяц(Дата1,-1)))); КонецЕсли; КонецЕсли; КонецПроцедуры // РазобратьРазностьДат |
|||
38
Anjo
07.11.08
✎
16:03
|
Кол = 0;
Дата1 = ДатаНачала; Дата2 = ДатаКонца; Пока Дата1 < Дата2 Цикл Дата1 = ДобавитьМесяц(Дата1,1); Кол = Кол+1; КонецЦикла; может так |
|||
39
форсмажор
07.11.08
✎
16:40
|
(37) жестко
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |