| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Работа с датой и временем (число в дату ) |
| Автор: AJIeKcEu 2.8.2006, 06:39 |
| Добрый день... у меня возникли вопросы при работе с датой : 1)Как мне расчитать дни с учетом выходных и прибавить к дате. Например в четверг - вторник.. колличество дней с учетом выходных и праздников.. также по числам.. 2) Вывод даты, с формата число->дата . Например: 38941.3664696875 -> 5.08.2006 ______________ Ну вот например: var dateNach:variant; dda4Iarray[1..100] of real; begin ...... dateNach:=dateTimePicker1.Date; dda4[ch]:=dateNach; ...... //ЗАтем вычисляем.. не буду все переменные описывать они типа реал okonch[i]:=(dda2[i]/dda1[i])+dda4[i]; // результат okonch[i]=38941.3664696875 Теперь мне нужжно это число с плавающей запятой преобразовать в дату типа 06.08.2006 тоесть в какуюнибуть переменную типа(стринг) записать в виде 06.08.2006, Через TimePicker не получается __________________________________________________ А вот с днями так: у меня допустим есть 2 даты 1.08.2006 и 09.08.2006 мне нужно посчитать колличество рабочих дней,без учета выходных ((Дата2-Дата1)- (Выходные дни+праздники)). Как можно узнать колличество выходных дней в заданный период? В заранее благодарен |
| Автор: Fedia 2.8.2006, 07:21 | ||||
Между четвергом и вторником знаешь сколько всего может быть
FormatDateTime('dd.mm.yyyy', okonch[i]), только массив лучше организовывать не из элементов типа real, а из элементов типа TDateTime. |
| Автор: AJIeKcEu 2.8.2006, 07:48 |
| to Fedia ok спасиб..ща попробую... ... Ну мне нужно выделить выходные дни.. как можно сделать?) в выделенный период дат |
| Автор: comtat 2.8.2006, 08:01 |
А не проще и правельнее ли работать с UnixTime ?? |
| Автор: AJIeKcEu 2.8.2006, 08:31 |
| to Fedia не у меня okonch[i] по формуле считается.... ну вроде получилось... только были проблемы.. пришлось назначить переменную tt:variant; okDate1:string; tt:=okonch[i]; FormatDateTime('dd.mm.yyyy', tt); okDate1:=Datetostr(tt); ТОлько после этого заработало.. а до этого ошибку выдовало... Спасибо.. ___ to comtat ______ осталось решить вопрос с выходными и праздничными днями... (может через DateTimePicker можно какнить?) |
| Автор: Snowy 2.8.2006, 09:06 | ||||
Узнать текущий день недели -
|
| Автор: Fedia 2.8.2006, 11:31 | ||||
okonch - у тебя этот массив какого типа ? Если array of real, то мой пример должен работать, если нет, то FormatDateTime('dd.mm.yyyy', TDateTime(okonch[i])).
Вот так точно не нужно делать, во первых лишняя переменная, во вторых использование типа вариант очень редко можно считать оправданным, т.к. его обработка достаточно медленная. На счет дат: организуй цикл перебора дат for i:=trunc(dt1) to trunc(dt2) do и проверяй при помощи функции DayOfWeek какой это день недели, если 1 или 7-й, то не считай их. На счет праздников сложнее, т.к. праздники - штука не постоянная. Можно сделать массив [1..365] of boolean в которой обозначить праздники и далее их учитывать. |
| Автор: AJIeKcEu 2.8.2006, 12:20 | ||||
| Все у меня все получилось.... всем спасибо для праздников я просто сделал:
А выходные через цикл (Спасибо Snowy )
Всем благодарен... тему можно закрыть! |