Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с датой и временем (число в дату ) 
V
    Опции темы
AJIeKcEu
  Дата 2.8.2006, 06:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 26.10.2005
Где: Уфа

Репутация: нет
Всего: 0



Добрый день... у меня возникли вопросы при работе с датой : 
1)Как мне расчитать дни с учетом выходных и прибавить к дате. Например в четверг - вторник.. колличество дней с учетом выходных и праздников.. также по числам.. 
2) Вывод даты, с формата число->дата . Например: 38941.3664696875 -> 5.08.2006 

______________
 smile  smile 
Ну вот например: 
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)- (Выходные дни+праздники)). 
Как можно узнать колличество выходных дней в заданный период? 



В заранее благодарен

PM MAIL WWW ICQ   Вверх
Fedia
Дата 2.8.2006, 07:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 465
Регистрация: 2.8.2006
Где: первым встречаю р ассвет

Репутация: 8
Всего: 13



Цитата

четверг - вторник

Между четвергом и вторником знаешь сколько всего может быть smile

Цитата

Вывод даты, с формата число->дата . Например: 38941.3664696875 -> 5.08.2006 

FormatDateTime('dd.mm.yyyy', okonch[i]), только массив лучше организовывать не из элементов типа real, а из элементов типа TDateTime.


--------------------
Накануне решающей битвы
Я иду, и надеждою зыбкой
Озаряется эта дорога,
Я мечтаю увидеть улыбку
На лице победившего Бога…
PM MAIL ICQ   Вверх
AJIeKcEu
Дата 2.8.2006, 07:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 26.10.2005
Где: Уфа

Репутация: нет
Всего: 0



to Fedia 
ok спасиб..ща попробую...
...

Ну мне нужно выделить выходные дни.. как можно сделать?) в выделенный период дат
PM MAIL WWW ICQ   Вверх
comtat
Дата 2.8.2006, 08:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1310
Регистрация: 2.5.2006
Где: Россия, Казань

Репутация: 3
Всего: 71



Цитата(AJIeKcEu @  2.8.2006,  06:39 Найти цитируемый пост)
 38941.3664696875 -> 5.08.2006 

А не проще и правельнее ли работать с UnixTime ??



--------------------
Рожденный в СССР !!!
ExtJS - мой фреймворк 
PM   Вверх
AJIeKcEu
Дата 2.8.2006, 08:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 26.10.2005
Где: Уфа

Репутация: нет
Всего: 0



to Fedia 
не у меня okonch[i] по формуле считается....
ну вроде получилось...
только были проблемы.. пришлось назначить переменную tt:variant; okDate1:string;

        tt:=okonch[i];
       FormatDateTime('dd.mm.yyyy', tt);
       okDate1:=Datetostr(tt);


ТОлько после этого заработало.. а до этого ошибку выдовало...

Спасибо..

___

to comtat 

 smile c UnixTime я не работал ещеsmile , но всеравно спасибо..

______
осталось решить вопрос с выходными и праздничными днями... (может через DateTimePicker можно какнить?)

Это сообщение отредактировал(а) AJIeKcEu - 2.8.2006, 08:35
PM MAIL WWW ICQ   Вверх
Snowy
Дата 2.8.2006, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Код
okDate1 := DateToStr(TDateTime(okonch[i]));

Узнать текущий день недели - 
Код
n := DayOfWeek(TDateTime(okonch[i]));

PM MAIL   Вверх
Fedia
Дата 2.8.2006, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 465
Регистрация: 2.8.2006
Где: первым встречаю р ассвет

Репутация: 8
Всего: 13



Цитата

не у меня okonch[i] по формуле считается....

okonch - у тебя этот массив какого типа ? Если array of real, то мой пример должен работать, если нет, то FormatDateTime('dd.mm.yyyy', TDateTime(okonch[i])).
Цитата

        tt:=okonch[i];
       FormatDateTime('dd.mm.yyyy', tt);
       okDate1:=Datetostr(tt);

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

На счет дат: организуй цикл перебора дат for i:=trunc(dt1) to trunc(dt2) do и проверяй при помощи функции DayOfWeek какой это день недели, если 1 или 7-й, то не считай их. На счет праздников сложнее, т.к. праздники - штука не постоянная. Можно сделать массив [1..365] of boolean в которой обозначить праздники и далее их учитывать.


--------------------
Накануне решающей битвы
Я иду, и надеждою зыбкой
Озаряется эта дорога,
Я мечтаю увидеть улыбку
На лице победившего Бога…
PM MAIL ICQ   Вверх
AJIeKcEu
Дата 2.8.2006, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 26.10.2005
Где: Уфа

Репутация: нет
Всего: 0



Все у меня все получилось.... всем спасибо

для праздников я просто сделал:


Код

        ...................
 n7:=formatDateTime('dd.mm', tt);
             if (n7='12.06') or (n7='01.01')or (n7='02.01')or (n7='08.03')
                 or (n7='01.05')or (n7='09.05')or (n7='11.10')or (n7='7.11')
                 or (n7='07.01') then  ....
......................................


А выходные через цикл (Спасибо  Snowy )

Код

.................
 n := DayOfWeek(TDateTime(okonch[i])); 
.................



Всем благодарен... тему можно закрыть!
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0562 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.