|
29 / 28 / 7
Регистрация: 10.07.2009
Сообщений: 317
|
|
Работа с датами (DateTimePicker)14.02.2010, 21:09. Показов 14840. Ответов 34
Метки нет (Все метки)
на форме два компонента DateTimePicker и один Edit, мне нужно расчитать стаж, я задаю начало и конец периода, вычитаю из конца начало и хочу получить примерно вот это 15 дней 8 месяцев 6 лет стажа
ну или хотябы это 15.08.06, а получаю вот это 29.11.1909. Пробовал через функции MonthsBetween, DaysBetween, YearsBetween, получаю следующее: 3621 дней 118 месяцев 9 лет стажа! Тоже не вариант! Я прошу подкорректировать код так чтобы стаж считался корректно, с учётом високосных годов и остальных мелочей которые сам DateTimePicker учитывает! Мне просто надо написать код, и всё.... Из написанного кода я сам подмечу ошибки и в дальнейшем учту их, я сторонник практики!!! Лучше один раз увидеть чем сто раз услышать! ![]() Приложение: Stage_2009.zip - первый вариант Stage_7.zip - второй вариант (с применением встроенных функций в модуль DateUtils)
0
|
|
| 14.02.2010, 21:09 | |
|
Ответы с готовыми решениями:
34
Работа с DateTimePicker. Работа с datetimepicker Работа с датами |
|
163 / 140 / 23
Регистрация: 28.12.2009
Сообщений: 365
|
||||||
| 15.02.2010, 16:10 | ||||||
|
число дней между двумя датами
1
|
||||||
|
29 / 28 / 7
Регистрация: 10.07.2009
Сообщений: 317
|
|
| 15.02.2010, 16:43 [ТС] | |
|
Я этот код изначально и писал
вот только сами посмотрите что он выдаёт и посчитайте.....
0
|
|
|
163 / 140 / 23
Регистрация: 28.12.2009
Сообщений: 365
|
|
| 15.02.2010, 16:56 | |
|
я то как раз посмотрел, у меня все правильно.
обрати внимание на S: extended;
0
|
|
|
29 / 28 / 7
Регистрация: 10.07.2009
Сообщений: 317
|
|
| 15.02.2010, 17:46 [ТС] | |
|
ну а я и твой код испытал, отличий ноль в результате... сам сравни
и ещё, мне надо не только дней, но и месяцев и лет.. Добавлено через 19 минут Раз ничё у меня уже неделю не получается то хочу спросить как мне написать эту прогу для вычисления стажа так чтоб учитывались годы в которых февраль равен 29 дням? Вот пример онлайн проги: http://whoyougle.ru/time/seniority
0
|
|
|
163 / 140 / 23
Регистрация: 28.12.2009
Сообщений: 365
|
|
| 15.02.2010, 17:50 | |
|
открой свой Stage_2009 проект
и замени в ButtonClick на Edit1.text:=FloatToStr(DateTimePicker2.Date - DateTimePicker1.Date); месяцев и лет сам догадайся как сделать
0
|
|
|
29 / 28 / 7
Регистрация: 10.07.2009
Сообщений: 317
|
|
| 15.02.2010, 19:12 [ТС] | |
|
Проблема не решена! Будут ещё предложения или тут мне никто не поможет?
0
|
|
|
163 / 140 / 23
Регистрация: 28.12.2009
Сообщений: 365
|
|
| 15.02.2010, 21:36 | |
|
обычно никто не помогает тем кто ждет готового решения, и не хочет пошевелить своими мозгами
0
|
|
|
29 / 28 / 7
Регистрация: 10.07.2009
Сообщений: 317
|
|
| 16.02.2010, 16:05 [ТС] | |
|
А по вашему я жду готового решения? Я тут наизнанку выворачиваюсь, на нескольких форумах, разные варианты прорабатываю, выкладываю исходники, а ответ не тот который нужен а мне ещё и говорят что мозгами шевелить нехочу, я шевелю как могу если вы считаете что я жду я готового решения то тогда вообще не пишите мне, раз вы такой умный и всезнающий.....
![]() Я стараюсь, но этот форум и призван для того чтобы помочь, а я что то помощи не вижу - одни упрёки!
0
|
|
|
163 / 140 / 23
Регистрация: 28.12.2009
Сообщений: 365
|
|
| 16.02.2010, 16:28 | |
|
я тебе дал работающий кусок кода, находящий число дней. и что я получаю вместо благодарности? ты уперся что он не работает, хотя я своими глазами вижу что работает.
из даты и количества дней можно узнать годы и месяцы... успехов тебе
0
|
|
|
29 / 28 / 7
Регистрация: 10.07.2009
Сообщений: 317
|
||
| 16.02.2010, 16:51 [ТС] | ||
|
да и формулу я уже другую взял.... к примеру вводим следующие даты: 08.12.1991 - 16.07.1991 = 1991007016 - 1991012008 = 4992 - 970 = 4022+1 (4 месяца 23 дня) 01.11.1992 - 23.12.1991 = 1992011001 - 1991012023 = 998978 - 988970 =10008+1 = 10009 (10 месяцев 9 дней) всего три разряда: 970, 988000, 988970 пример: 1)18988000 (18 года, 988 (разряд месяцев)), 000 (дни - в случе если их нет) - от этого числа в данномслуче отнимаем 988000 2) 18991971 - от этого отнимаем 988970 - понятно что 970 - разряд дней
0
|
||
|
4040 / 2652 / 582
Регистрация: 11.09.2009
Сообщений: 9,465
|
|
| 16.02.2010, 16:55 | |
|
Не кипятись, >arty<
В старых версиях Delphi действительно с датами не всё было в порядке, но в теперешних, поверь, всё O'k. На приложенной картинке - рабочий проект. Delphi 7. Р.S. Учёт високосных при рассчёте стажа легко делается, если вспомнить, что в году не 365, а 365,25 дней.
0
|
|
|
163 / 140 / 23
Регистрация: 28.12.2009
Сообщений: 365
|
|||||||
| 16.02.2010, 17:15 | |||||||
|
еще раз повторяю, зная даты можно учесть и високосность года. простым циклом с if
Добавлено через 18 минут
0
|
|||||||
|
29 / 28 / 7
Регистрация: 10.07.2009
Сообщений: 317
|
||
| 16.02.2010, 17:21 [ТС] | ||
Ведь в цикле надо задать чтоб за каждый високосный год прибавляли по одному деньку, а это я даже пока что не представляю....Приложение: Stage_7.zip
0
|
||
|
4040 / 2652 / 582
Регистрация: 11.09.2009
Сообщений: 9,465
|
|
| 16.02.2010, 17:21 | |
|
Biggemot
Согласен.
0
|
|
|
29 / 28 / 7
Регистрация: 10.07.2009
Сообщений: 317
|
|
| 16.02.2010, 17:58 [ТС] | |
|
А нельзя ли цикл сделать так: так как я пользуюсь компонентами для работы с датами а они знают что такое високосный год, то соответственно при разности они выдают общее количество дней с учётом этих годов и я могу точно определить сколько лет стажа и месяцев, остатётся только подсчитать сколько раз нам повстречался вискосный год (например 13 лет стажа - 3 раза, 16 лет - 4) и просто прибаляем количество повторений (дней) к оставшимся дням, если они больше 30 то месяцы увеличиваем на один, а остаток если таковой имеется записываем в дни...
Я всё правильно продумал?
0
|
|
|
4040 / 2652 / 582
Регистрация: 11.09.2009
Сообщений: 9,465
|
|
| 16.02.2010, 18:01 | |
|
Так не получится. Например, если стаж 3 года, один из них может быть високосным, а может быть и ни одного. Если 5 лет - может быть один високосный, а может и два... Надо проверять.
0
|
|
|
163 / 140 / 23
Регистрация: 28.12.2009
Сообщений: 365
|
|
| 16.02.2010, 18:03 | |
|
>arty<, не правильно. в 13 годах может быть и 3 високосных и 4
0
|
|
|
29 / 28 / 7
Регистрация: 10.07.2009
Сообщений: 317
|
||
| 16.02.2010, 18:06 [ТС] | ||
![]() Похоже придётся бросить идею и пускай юзеры руками считают и печатают своё заключение...... У меня уже нервы на исходе просто, я незнаю куда дальше копать.....
0
|
||
|
163 / 140 / 23
Регистрация: 28.12.2009
Сообщений: 365
|
||||||
| 16.02.2010, 18:06 | ||||||
1
|
||||||
| 16.02.2010, 18:06 | |
|
Помогаю со студенческими работами здесь
20
Работа с датами Работа с датами Работа с датами Работа с датами в Delphi Как сложить поля dbedit и datetimepicker и результат записался в другой datetimepicker Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|