Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.01.2009, 13:49   #1
Inbox
Пользователь
 
Аватар для Inbox
 
Регистрация: 10.01.2007
Сообщений: 77
По умолчанию DateTimePicker, MonthCalendar кол-во дней

Пользовательвыбирает диапазон времени между двумя DateTimePicker.
и подсчитываем кол-дней.
Как посчитать дни с вычетом субботы и воскресения???

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
kolday:integer;
begin
kolday:=DaysBetween(DateTimePicker1.Date,DateTimePicker2.Date);
edit1.Text:=Floattostr(kolday);
MonthCalendar1.MinDate:=DateTimePicker1.Date; //отображает диапазон времени
MonthCalendar1.MaxDate:=DateTimePicker2.Date; //в компоненте
end;
end.
Это тебе не следует читать.
Inbox вне форума Ответить с цитированием
Старый 29.01.2009, 14:09   #2
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Вот нашел у себя :
Код:
function WorkDays(DateFirst, DateLast: TDateTime): Integer;// подсчет рабочих дней
var
  i: integer;
  AllDays: word;
begin
  AllDays := DateTimeToTimeStamp(DateLast).Date -
                 DateTimeToTimeStamp(DateFirst).Date + 1;
  Result := AllDays;
  for i := 0 to AllDays - 1 do
  begin
    if DayOfWeek(DateFirst + i) - 1 in [6, 0] then
      Result := Result - 1;
  end;
end;
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 29.01.2009, 22:20   #3
Inbox
Пользователь
 
Аватар для Inbox
 
Регистрация: 10.01.2007
Сообщений: 77
По умолчанию

DateTimeToTimeStamp(DateLast) а это что? откуда?
Это тебе не следует читать.
Inbox вне форума Ответить с цитированием
Старый 29.01.2009, 23:16   #4
_Engine_
Форумчанин
 
Регистрация: 29.06.2008
Сообщений: 603
По умолчанию

Это из DateUtils. Хотя, ИМХО, удобнее пользовать функцию DaysBetween вместо неё
_Engine_ вне форума Ответить с цитированием
Старый 29.01.2009, 23:53   #5
Inbox
Пользователь
 
Аватар для Inbox
 
Регистрация: 10.01.2007
Сообщений: 77
По умолчанию

Значит субота и воскресенье в DateUtils под номером 0и6?
Это тебе не следует читать.
Inbox вне форума Ответить с цитированием
Старый 30.01.2009, 00:14   #6
Inbox
Пользователь
 
Аватар для Inbox
 
Регистрация: 10.01.2007
Сообщений: 77
По умолчанию

Чтот то я не могу сообразить как подсчитать суботы, помоги плиз
Это тебе не следует читать.
Inbox вне форума Ответить с цитированием
Старый 30.01.2009, 00:25   #7
_Engine_
Форумчанин
 
Регистрация: 29.06.2008
Сообщений: 603
По умолчанию

Вот копипаст примера из справки:
This example uses an edit box and a button on a form. When the user enters a date in the edit box in the format associated with the current locale (for example MM/DD/YY format in the US), the string entered is converted to a TDateTime value. This value is used to indicate the day of the week the date represents.

procedure TForm1.Button1Click(Sender: TObject);

var
ADate: TDateTime;
days: array[1..7] of string;
begin
days[1] := 'Sunday';
days[2] := 'Monday';
days[3] := 'Tuesday';
days[4] := 'Wednesday';
days[5] := 'Thursday';
days[6] := 'Friday';
days[7] := 'Saturday';
ADate := StrToDate(Edit1.Text);
ShowMessage(Edit1.Text + ' is a ' + days[DayOfWeek(ADate)];
end;
_Engine_ вне форума Ответить с цитированием
Старый 30.01.2009, 00:56   #8
Inbox
Пользователь
 
Аватар для Inbox
 
Регистрация: 10.01.2007
Сообщений: 77
По умолчанию

Код:
function TForm1.WorkDays(DateFirst, DateLast: TDateTime): Integer;
var
  i: integer;
  AllDays: word;
begin
  AllDays := DaysBetween(DateTimePicker1.Date,DateTimePicker2.Date+1);
  Result := AllDays;
  for i := 0 to AllDays - 1 do
  begin
    if DayOfWeek(DateFirst + i) - 1 in [6, 0] then
      Result := Result - 1;
  end;
end;
Как мне получить результат?? из этого
Это тебе не следует читать.
Inbox вне форума Ответить с цитированием
Старый 30.01.2009, 01:02   #9
Inbox
Пользователь
 
Аватар для Inbox
 
Регистрация: 10.01.2007
Сообщений: 77
По умолчанию

Цитата:
Вот копипаст примера из справки
Здесь мы создаем массив и я ничего с ним немогу сделать.
Маcсив уже есть в dateutils, я задаю диапазон чисел при помощи двух компонентов DateTimePicker и мне надо выдернуть из него все дни под номером 6. Kotofff чего то подкинул похожее, но я не соображу как вывести результат вычислений этой функции
Это тебе не следует читать.
Inbox вне форума Ответить с цитированием
Старый 30.01.2009, 01:06   #10
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Inbox - умница.
Осталось добавить про семерку (кроме шестерки) и ваша задача
Цитата:
Как посчитать дни с вычетом субботы и воскресения???
решена...
Вы это сделали самостояятельно. Это - самое главное. Вы научились.
Ничего особенного, но отмечу краткие и по существу ответы ваши ответы на собственные вопросы Inbox.
За эти качества ставлю свой плюс...
А теперь пожелание - может, не стоит так торопиться с вопросами?
Вроде бы у вас с головой все в порядке.

Последний раз редактировалось mihali4; 30.01.2009 в 01:10.
mihali4 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MonthCalendar + Memo _if_ Компоненты Delphi 6 31.12.2008 12:26
Добавление кол-во дней в дату D@rk M@k Общие вопросы Delphi 1 19.04.2008 10:19
Подсчёт кол-ва дней ivp88 БД в Delphi 7 14.01.2008 09:16
Вопросы DateTimePicker Askat БД в Delphi 14 29.06.2007 18:53
определение кол-ва дней в месяце apelsin Общие вопросы Delphi 3 15.02.2007 07:21