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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.02.2007, 23:26   #1
apelsin
Новичок
Джуниор
 
Регистрация: 14.02.2007
Сообщений: 1
По умолчанию определение кол-ва дней в месяце

как по значению года и месяца определить кол-во дней в данном месяце?
apelsin вне форума Ответить с цитированием
Старый 14.02.2007, 23:27   #2
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,501
По умолчанию

январь 31 день. февраль 28 или 29... это просто знать надо. Вообще не понял вопроса .

Если что-то известно заранее, то создаёться таблица соответсвия, некоторые любят называть это "Кеш"
Alar вне форума Ответить с цитированием
Старый 14.02.2007, 23:36   #3
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

procedure Tfmain.ButtonDateCalcClick(Sender: TObject);
var dt: TDate;
y,m,d: word;
begin
y:=1987;
m:=2;
//сколько дней в феврале 1987 года?
dt:=EncodeDate(y,m+1,1)-1;
DecodeDate(dt,y,m,d);
MonthCalendar1.Date:=dt; //для наглядности
ShowMessage('В феврале 1987 года '+IntToStr(d)+' дней');
end;
mihali4 вне форума Ответить с цитированием
Старый 15.02.2007, 07:21   #4
Plague
Забанен
Форумчанин Подтвердите свой е-майл
 
Аватар для Plague
 
Регистрация: 01.11.2006
Сообщений: 420
По умолчанию

Вот как реализован ответ на твой вопрос в Delphi в модуле Calendar.pas

function TCalendar.IsLeapYear(AYear: Integer): Boolean;
begin
Result := (AYear mod 4 = 0) and ((AYear mod 100 <> 0) or (AYear mod 400 = 0));
end;

function TCalendar.DaysPerMonth(AYear, AMonth: Integer): Integer;
const
DaysInMonth: array[1..12] of Integer = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
begin
Result := DaysInMonth[AMonth];
if (AMonth = 2) and IsLeapYear(AYear) then Inc(Result); { leap-year Feb is special }
end;

function TCalendar.DaysThisMonth: Integer;
begin
Result := DaysPerMonth(Year, Month);
end;

Думаю коментарии с моей стороны будут лишними.
Если ничто другое не помогает, прочтите, наконец, инструкцию! Аксиома Кана
Plague вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
КАЛЫМ на ПАРУ ДНЕЙ (PHP + Delphi) = $ BoryaPop Фриланс 8 24.05.2008 21:56
Добавление кол-во дней в дату D@rk M@k Общие вопросы Delphi 1 19.04.2008 10:19
Подсчёт кол-ва дней ivp88 БД в Delphi 7 14.01.2008 09:16
Как сделать отсчет дней от заданной даты в Excel? ru16 Microsoft Office Excel 1 22.11.2007 11:13
число дней в месяце конкретного года (Excel) Andrew_R Microsoft Office Excel 2 28.10.2007 21:22