Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.55/69: Рейтинг темы: голосов - 69, средняя оценка - 4.55
29 / 28 / 7
Регистрация: 10.07.2009
Сообщений: 317

Работа с датами (DateTimePicker)

14.02.2010, 21:09. Показов 15203. Ответов 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
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.02.2010, 21:09
Ответы с готовыми решениями:

Работа с DateTimePicker.
Есть 2 DateTimePicker. Надо сделать так, чтобы при нажатии на CheckBox, то есть при выставлении галочки дата в них убиралась, и они...

Работа с datetimepicker
Здравствуйте помогите пожалуйста с таким вопросом!!! У меня есть datetimepickerв котором я выставляю дату и есть Edit в котором я ставлю...

Работа с датами
Всем привет,помогите ,пожалуйста, с программой, сам не разберусь никак. Приложение с двумя однострочными редакторами и кнопкой вычислить....

34
29 / 28 / 7
Регистрация: 10.07.2009
Сообщений: 317
16.02.2010, 18:17  [ТС]
Студворк — интернет-сервис помощи студентам
для вас легко, а у меня опыта нет(соотвественно для меня нет), вот поэтому я и многих полезных функций в Делфи то и незнаю, а что знаю то конечно сам делаю.....

И ещё, не поможете разрешить проблему с ориентацией формы отчёта? Я её в дизайнере задаю вроде бы портретную, сохраняю, а выводит всё равно книжную, в чём дело?
0
 Аватар для Biggemot
163 / 140 / 23
Регистрация: 28.12.2009
Сообщений: 365
16.02.2010, 18:27
Цитата Сообщение от >arty< Посмотреть сообщение
для вас легко, а у меня опыта нет
я имел ввиду, легко убедиться в том что программа работает правильно, см.предыдущий пост.
чуть попозже посмотрю ориентацию
0
29 / 28 / 7
Регистрация: 10.07.2009
Сообщений: 317
16.02.2010, 18:31  [ТС]
мне одно непонятно из поста, где вы вычисляете значение переменной days, разве функция
Code
1
DaysBetween(d1,d2)
не подойдёт для определения общего количества дней между двумя датами?
0
29 / 28 / 7
Регистрация: 10.07.2009
Сообщений: 317
16.02.2010, 19:06  [ТС]
Посмотрите исходник прикреплённый ниже, воспользовался фрагментом вашего кода и если я не меняю нигода ни месяца, а только дни то всегда месяцам присваивает значение 3, в чём может быть дело, запускал отладку но так и не понял, вроде должно быть по нулям....

Приложение: Stage_7.zip
0
 Аватар для Biggemot
163 / 140 / 23
Регистрация: 28.12.2009
Сообщений: 365
16.02.2010, 22:52
Цитата Сообщение от >arty< Посмотреть сообщение
мне одно непонятно из поста, где вы вычисляете значение переменной days, разве функция
DaysBetween(d1,d2)
не подойдёт для определения общего количества дней между двумя датами?
у меня так
Delphi
1
Days:=DateTimePicker2.Date-DateTimePicker1.Date;
думаю с DaysBetween тоже заработает.
ща посмотрю исходник

Добавлено через 32 минуты
переменная month не инициализирована
перед циклом добавь
Delphi
1
month:=0;
2
29 / 28 / 7
Регистрация: 10.07.2009
Сообщений: 317
17.02.2010, 15:49  [ТС]
Сделал совсем иначе:
Стаж.zip

Дело в том что есть определённый алгоритм у наших специалистов, не буду его пояснять так как на это уйдёт время,плюс есть у нас рабочая программа к которой эти специалисты не имеют доступ - не положено (она считает но печатной формы заключения не выдаёт и нужна совсем не для этих целей),
так вот, алгоритм её наипростейший: к примеру, устроился человек на работу 01.01.1995 и закончил деятельность 16.02.2010, то стаж его будет равнятся 15 лет 1 месяц 15 дней, если же число месяца конца стажа меньше то из лет убавляется один год а месяцам приплюсовывается 12, если дням то 30 (всегда!) и вычитается один месяц из результата, в итоге прога работает так как псчитают специалисты и как положено вести по законодательству расчёт стажа!
с 01.01.2008 до 01.01.2009 и с 01.01.2009 до 01.01.2010 получается ровно 1 год, хотя 2008 - високосный - как вы и сказали

А теперь прошу помочь в моей проблеме с отчётом, не получается заставить выводить альбомный отчёт
0
 Аватар для Biggemot
163 / 140 / 23
Регистрация: 28.12.2009
Сообщений: 365
17.02.2010, 15:56
Цитата Сообщение от >arty< Посмотреть сообщение
с 01.01.2008 до 01.01.2009 и с 01.01.2009 до 01.01.2010 получается ровно 1 год, хотя 2008 - високосный - как вы и сказали
только в моей программе по-умному, а в законодательстве... по-другому
0
29 / 28 / 7
Регистрация: 10.07.2009
Сообщений: 317
17.02.2010, 16:07  [ТС]
Цитата Сообщение от Biggemot Посмотреть сообщение
только в моей программе по-умному, а в законодательстве... по-другому
Я с учётом вашего кода модернизировал свою прогу и она считала с учётом високосных годов, но вот только им надо так как им закон велит считать: месяц = 30 дней, год = 365 дней
0
 Аватар для Biggemot
163 / 140 / 23
Регистрация: 28.12.2009
Сообщений: 365
17.02.2010, 16:12
вот я и говорю, у нас вместе получилось как у людей, а у них бюрократия
0
29 / 28 / 7
Регистрация: 10.07.2009
Сообщений: 317
17.02.2010, 16:35  [ТС]
Может всё таки поможете с выводом на печать
0
 Аватар для Biggemot
163 / 140 / 23
Регистрация: 28.12.2009
Сообщений: 365
17.02.2010, 17:16
в RaveReports у Page1 поставь Orientation = poLandScape и PaperSize = A4 Sheet...
1
29 / 28 / 7
Регистрация: 10.07.2009
Сообщений: 317
17.02.2010, 17:21  [ТС]
вот я и говорю, у нас вместе получилось как у людей, а у них бюрократия
Я кстати воспользовавшись вашим кодом внёс малюсенькие изменения - добавил вычисление месяцев....
Вот она то как раз и правильно считает а в предыдущем посте с приложением "стаж" - "бюрократически правильно"


Приложение: Stage_7.zip
0
29 / 28 / 7
Регистрация: 10.07.2009
Сообщений: 317
17.02.2010, 17:32  [ТС]
Цитата Сообщение от Biggemot Посмотреть сообщение
в RaveReports у Page1 поставь Orientation = poLandScape и PaperSize = A4 Sheet...
К сожалению совет не помог - я ведь вывожу в превью а не на принтер
0
 Аватар для Biggemot
163 / 140 / 23
Регистрация: 28.12.2009
Сообщений: 365
17.02.2010, 18:49
у меня с такими настройками и в превью он отображается альбомным
0
29 / 28 / 7
Регистрация: 10.07.2009
Сообщений: 317
18.02.2010, 16:24  [ТС]
проблема решилась, на компе просто не было ни одного принтера, даже виртуального, соответственно настройки ориентации не были доступны....
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.02.2010, 16:24

Работа с датами
Хотел написать обработчик события OnClick для компонента Button, который отображает в компоненте Label разность в днях и часах между...

Работа с датами
Не могу реализовать такую тему. Сразу пример: допустим в Edit вписываю 61. В label должен отобразить сколько это будет лет, месяцев и дней....

Работа с датами
делаю следующее var Y,M,D:word; begin decodedate(Date,Y,M,D); //разбиваю дату if (EncodeDate(Y, M,...

Работа с датами в Delphi
Здравствуйте! Подскажите пожалуйста как работать с датами в делфи, преподователь сказал что существуют специальные типы данных и компоненты...

Как сложить поля dbedit и datetimepicker и результат записался в другой datetimepicker
procedure Tpods4et.DateTimePicker1Change(Sender: TObject); var d:string; a:integer; begin a:=strtoint(dbedit4.Text); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
35
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru