|
1 / 1 / 0
Регистрация: 05.08.2011
Сообщений: 153
|
||||||
Как вычислить кол-во дней между двумя датами и перевести в кол-во лет, мес. дней?05.12.2019, 10:21. Показов 6897. Ответов 19
Метки нет (Все метки)
Собственно, как вычислить кол-во дней я знаю:
А вот как теперь это кол-во дней перевести в кол-во лет, месяцев и дней и вывести в Label1.Caption? И еще, если можно - текстовое наименование "месяцы" и "дни" (для вывода в Label1) я собираюсь использовать в сокращенном виде: "мес." и "дн.", а вот для лет хотелось бы текст менять: если 1 год, то "год", 2 года - "года", 5 лет - "лет".
0
|
||||||
| 05.12.2019, 10:21 | |
|
Ответы с готовыми решениями:
19
Написать программу, считающую кол-во дней между двумя заданными датами! |
|
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
|
|||||||
| 05.12.2019, 11:36 | |||||||
|
вот, от 30 января до 30 марта сколько прошло месяцев? от от 31 января до 1 марта сколько? а от 29 февраля 2016 до 28 февраля 2018 сколько прошло лет месяцев дней? и много ещё примеров можно привести, когда результат спорный. а тебе это зачем? Добавлено через 4 минуты поиграйся с этим онлайн калькулятором - https://planetcalc.ru/274/ тебе такое нужно? Добавлено через 22 минуты подумал, а может всё проще. попробуй готовые функции
1
|
|||||||
|
1 / 1 / 0
Регистрация: 05.08.2011
Сообщений: 153
|
|
| 05.12.2019, 13:55 [ТС] | |
|
Подскажите, как вычислить количество дней в месяце по дате: 01.02.2020 (эта дата находится в Edit3.Text).
0
|
|
|
1 / 1 / 0
Регистрация: 05.08.2011
Сообщений: 153
|
||||||
| 05.12.2019, 15:17 [ТС] | ||||||
|
Нет, не текущий день вывести надо, а количество дней в текущем месяце: 01.02.2020 (эта дата находится в Edit3.Text).
Добавлено через 29 минут Все, нашел:
0
|
||||||
|
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
|
|||||||
| 05.12.2019, 15:18 | |||||||
1
|
|||||||
| 05.12.2019, 15:21 | |
|
0
|
|
|
1 / 1 / 0
Регистрация: 05.08.2011
Сообщений: 153
|
|
| 06.12.2019, 21:44 [ТС] | |
|
Вроде бы получилось, что я хотел. Пока ошибок не нашел.
Если интересно - полюбопытствуйте.
0
|
|
|
1 / 1 / 0
Регистрация: 05.08.2011
Сообщений: 153
|
||||||
| 07.12.2019, 08:27 [ТС] | ||||||
|
Забыл поставить перехватчик ошибок:
0
|
||||||
|
Модератор
|
||
| 07.12.2019, 17:30 | ||
|
Вот, предположим, я ввел в эти самые Edit3 и Edit4 по пробелу, ну или по букве какой... Они пустые? Нет!!! Значит обработка пойдет далее... А к чему она приведет? К вылету программы... И что, это нормально?
0
|
||
|
1 / 1 / 0
Регистрация: 05.08.2011
Сообщений: 153
|
|
| 07.12.2019, 17:57 [ТС] | |
|
0
|
|
|
1 / 1 / 0
Регистрация: 05.08.2011
Сообщений: 153
|
|||
| 07.12.2019, 18:33 [ТС] | |||
|
Я же писал:
Это моя задача, я просто ею поделился, я не выполняю здесь чей-то заказ. Просто было сказано:
0
|
|||
|
Модератор
|
||
| 07.12.2019, 18:41 | ||
|
Не по теме: Если хотите поделиться - да ради бога, только делиться надо рабочим кодом, а не таким, к которому потом поправки идут с намеками "кому надо, тот разберется"... Кому действительно надо - тот сам сделает, без вот этой Вашей, простите мне мой хранцусский, белиберды...
0
|
||
|
1 / 1 / 0
Регистрация: 05.08.2011
Сообщений: 153
|
|||||||||||
| 07.12.2019, 20:20 [ТС] | |||||||||||
|
Пожалуйста, код:
Кликните здесь для просмотра всего текста
Скажите, у вас здесь на форуме, наверное, есть друзья? Если бы вот такую программу, вот в таком виде выложил не я, а один из них, написали бы вы ему по-хранцусски? Или похвалили бы другана? Я хотел, чтобы кто-то попытался отыскать ошибку самого алгоритма, а не придирался к ошибкам, которых по сути-то и нет. Добавлено через 29 минут А касательно этого: Так что не надо в чужих глазах соринки искать. Добавлено через 55 минут Хоть я тогда просил не вычисление текущего дня месяца, но этот код мне тоже очень пригодился, так что - спасибо.
0
|
|||||||||||
|
Модератор
|
||||
| 08.12.2019, 10:32 | ||||
|
1. Не все то, что кажется очевидным Вам, будет столь же очевидно другому пользователю... Вот я увидел Вашу программу: я вижу кнопку, которую можно нажать, я ее нажимаю - получаю ошибку. И тот факт, что эту ошибку Вы отловили и сообщили о ней более внятно, чем это делает система, не изменяет странность ситуации: зачем разрешать нажимать на кнопку до получения всех входных данных от пользователя? С другой стороны, что мешает сразу, при старте программы, инициировать начальное и конечное значение даты? Инициализировали текущей датой - и сразу отпадает необходимость в одной из проверок. 2. Когда я открыл программу - я увидел 2 календаря, 2 Эдита и кнопку... Про кнопку я уже написал, хотя это было второе, что я сделал в Вашей программе. Первое же, что я сделал - попытался ввести дату в поле ввода и был неприятно удивлен, когда у меня это не получилось... Скажите, зачем использовать поле ввода, но запрещать туда что-то вводить? Опытным путем я догадался, что туда будет заноситься выбранная в календаре дата... Помилуйте, но к чему тогда Эдит? Почему нельзя использовать Label или StaticText? Сразу бы, во-первых, отпал вопрос о причинах невозможности ввода, во-вторых - и мысли бы о вводе не возникло: т.к. вводить некуда, то, значит и не надо! и, в-третьих, код сокращается на 2 обработчика событий (а, кстати, почему 2? Тут прямо напрашивается один обработчик, присвоенный нескольким компонентам?)3. Более того, зачастую гораздо быстрее ввести дату именно вручную, чем листать календарь, выбирая какой-нибудь тышша восемьсот лохматый год... Вот тут бы событие OnKeyPress было бы оправданно и пригодилось бы для проверки ввода только цифр и символа-разделителя... 4. Дата у Вас выбирается в календаре... Скажите, какой сакральный смысл получить дату, перевести ее в строку, вывести строку в Эдит (до этого момента весь процесс поддается логическому объяснению, несмотря на спорность выбора компонента Эдит в качестве... Ну, говорил уже об этом)... Но вот потом... Зачем обратно преобразовывать из строки в дату? Почему нельзя использовать уже полученные значения дат? Мало того, что этот шаг ненужен и нелогичен, так кроме этого на любое преобразование типов тратится время (пусть и микроскопически малое)... 5. 6. В определении правильного наименования в годах Вы пошли по пути наименьшего сопротивления - простым перечислением... Но что получится, если разница будет более чем 101 год? Можно продолжить, но что-то надоело... Надеюсь, Вы воспримите критику адекватно, без обвинений в кумовстве, предвзятом отношении и оскорблениях достоинства... Ну а нет, так нет, дело сугубо личное
1
|
||||
|
1 / 1 / 0
Регистрация: 05.08.2011
Сообщений: 153
|
|
| 08.12.2019, 11:15 [ТС] | |
|
Эта программка просто одна функция от другой программы, просто для наглядности я ее оформил так. Теперь я уже встроил этот алгоритм в другую программу и получил нужный результат. Я не хочу говорить, что я там делаю, это личное и вряд ли кому будет интересно, но 101 год это намного больше чем нужно.
Я тут думаю, может быть, Edit'ы с датами и правда заменить на те же Label... пока не знаю. В первоначальном варианте даты так и вводились - в Edit'ы, но потом я добавил календари и мне это понравилось. Мне не нужно выбирать большие промежутки времени, так что календари для выбора вполне удобны. По условиям задачи "Начальная дата не должна быть равна Конечной дате или превышать ее" и это действительно так. Пользователем моей программки буду только я, так что просто делаю ее под себя. Причешу ее конечно окончательно, но эти все, вполне возможно лишние, преобразования при выполнении программы на ПК не имеют никакого значения, результат появляется мгновенно, так что... Меня в первую очередь интересовал подсчет количества лет, месяцев и дней между двумя датами, и я хотел узнать - считает-то правильно? Я попробовал всевозможные сочетания дат и ошибки не нашел. В RichEdit1 для наглядности выводится своеобразный лог, по которому можно судить, как происходит расчет. Добавлено через 10 минут А, если учесть, что последний раз я пользовался Delphi в 2008 году, то тот факт, что за пару дней я решил эту задачку вызывает во мне чувство гордости. ![]() Даже за один день, первый я потратил на другой способ подсчета, запутался окончательно из-за разного кол-ва дней в месяцах и високосном году, плюнул и сделал по-другому.
0
|
|
|
Модератор
4149 / 2360 / 812
Регистрация: 15.11.2015
Сообщений: 9,462
|
||
| 08.12.2019, 11:50 | ||
|
Почему бы не использовать готовый компонент DateTimePicker? Он и дату в готовом нормальном виде всегда выдаёт, и с клавиатуры можно вводить, и календарь открывается, когда нужно.
1
|
||
|
1 / 1 / 0
Регистрация: 05.08.2011
Сообщений: 153
|
|
| 08.12.2019, 11:58 [ТС] | |
|
Вот, если бы я о нем знал, то обязательно бы использовал.
0
|
|
|
Модератор
|
|||||||||||||
| 08.12.2019, 12:09 | |||||||||||||
2
|
|||||||||||||
| 08.12.2019, 12:09 | |
|
Помогаю со студенческими работами здесь
20
вычислить кол-во дней между датами Запрос к БД Acces для расчета кол-ва лет и кол-ва дней до ДР
Кол-во дней между датами в двух ячейках, в месяцах и днях Нахождение дней между диапазоном дат(не кол-во дней, а сами дни) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2.
Задача: отобразить спецтехнику, которая на данный момент находится в ремонте.
Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
|
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
|
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|