Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.06;
Скачать: CL | DM;

Вниз

Количество дней в месяце   Найти похожие ветки 

 
KSION ©   (2003-01-23 12:14) [0]

Как узнать количество дней в месяце


 
MBo ©   (2003-01-23 12:24) [1]

function DaysInMonth




 
Separator ©   (2003-01-23 12:34) [2]

function DaysPerMonth(AYear, AMonth: Integer): Integer;


 
KSION ©   (2003-01-23 13:21) [3]

в какой версии Делфи? в 6-ке нет, такой функции (DaysPerMonth), или какой модуль использовать?


 
Johnmen ©   (2003-01-23 13:39) [4]

Просто удивительная беспомощность !
MBo © тебе сказал, а ты даже не можешь нажать F1...


 
Anatoly Podgoretsky ©   (2003-01-23 13:42) [5]

Переинсталлируй Дельфи


 
Separator ©   (2003-01-23 14:02) [6]

Unit DateUtils


 
Slava ©   (2003-01-23 14:20) [7]

Даже, если нет такой функции, то просто берешь первое число следующего месяца и отнимаешь один день.


 
mike-d ©   (2003-01-23 15:18) [8]

uses SysUtils;

...

// Y - год
// M - номер месяца (1..12)
// DayNum - кол-во дней

DayNum := MonthDays[IsLeapYear(Y), M];


 
cult ©   (2003-01-23 15:29) [9]

Ну блин Ваще, функция пишется самостоятельно за 5 минут и содержать будет строк 10, даже если бы в дельфях встроенной не было. Смешно и грустно...

типа:

function Days(Year,Month:integer):integer;
begin
Result:=-1;
case month of
1,3,5,7,8,10,12:Result:=31;
4,6,9,11:Result:=30;
2:begin
Result:=28;
if (Year-2002) div 4 = 0 then Result:=Result+1;
end;
end;
end;


 
MBo ©   (2003-01-23 15:31) [10]

все хорошо, но это:
if (Year-2002) div 4 = 0 then Result:=Result+1;
Ну блин Ваще


 
Anatoly Podgoretsky ©   (2003-01-23 15:36) [11]

Это выходит, что в феврале 2002 года 29 дней, в могилу.


 
cult ©   (2003-01-23 15:38) [12]

mod, блин, а не div!
Ну я Ваще :)))

А насчет 2002... а он не високосный был? ну тогда 2000 :)


 
REA ©   (2003-01-23 16:03) [13]

Ну если брать планетарный масштаб, то там каждый сотый или тысячный год не високосный. Или что-то типа того. Вобщем на 4 не всегда можно делить.


 
Reindeer Moss Eater   (2003-01-23 16:07) [14]

В Григорианском календаре в течение 400 лет должно быть не 100 високосных лет, а на 4 меньше. Эти 4 года определяются произвольным образом.


 
KDenis ©   (2003-01-23 16:16) [15]

Самый простой способ: научится считать до 31


 
REA ©   (2003-01-23 16:29) [16]

>Эти 4 года определяются произвольным образом.

Т.е. заявку надо писать что ли в комитет по распределению дат? Наверняка какая то система есть. Или планеты того - с орбиты сползают?


 
Reindeer Moss Eater   (2003-01-23 16:50) [17]

Т.е. заявку надо писать что ли в комитет по распределению дат? Наверняка какая то система есть.
Или планеты того - с орбиты сползают?

1. Зачем?
2. Да наверняка есть
3. Постепенно сползают


 
Anatoly Podgoretsky ©   (2003-01-23 16:54) [18]

И скорость вращения изменяется, падает


 
Reindeer Moss Eater   (2003-01-23 17:01) [19]

Виноват, наврал. Про произвольный выбор.

к високосным относятся только те вековые годы, число столетий которых делится на 4 без остатка. Такими годами, являются: 1600, 2000, 2400, 2800 и т. д. Годы же 1700, 1800, 1900, 2100 и т. д. будут простыми.


 
dolmat ©   (2003-01-23 17:04) [20]

еще можно попробовать такое
if mons+1>12 then year1:=year+1 else year1:=year;
n_day:=strtodate("01."+inttostr(mons)+"."+inttostr(year))-strtodate("01."+inttostr(mons+1)+"."+inttostr(year1))-1;


 
Johnmen ©   (2003-01-23 17:10) [21]

>Reindeer Moss Eater (23.01.03 17:01)

Наврал опять...

Високосные - делящиеся на 4 без ост-ка, за исключением делящихся на 100, за исключением делящихся на 400


 
Reindeer Moss Eater   (2003-01-23 17:16) [22]

Johnmen ©
курсив у меня - это фрагмент.
В нем описано правило поиска невисокосных лет всех среди кратных четырем.


 
KDenis ©   (2003-01-23 17:21) [23]

А зачем количество дней в месяце? Может GetDate подойдет???


 
Романов Р.В. ©   (2003-01-23 17:41) [24]


> Високосные - делящиеся на 4 без ост-ка, за исключением делящихся
> на 100, за исключением делящихся на 400


Да что вы беспокоитесь. Через 6 лет взорвется Солнце, а тех кто выжевет через 3 года добъет метеорит :)


 
dtrn   (2003-01-27 16:15) [25]

function MaxDayOfMonth(Year,Month:word):integer;Overload;
function MaxDayOfMonth(Date:TDateTime):integer;Overload;

implementation

function MaxDayOfMonth(Year,Month:word):integer;
begin
Result:=PDayTable(
@MonthDays[IsLeapYear(Year)])^[Month];
end;

function MaxDayOfMonth(Date:TDateTime):integer;Overload;
var
Year,Month,Day:Word;
begin
DecodeDate(Date,Year,Month,Day);
Result:=MaxDayOfMonth(Year,Month);
end;


 
Anatoly Podgoretsky ©   (2003-01-27 16:23) [26]

Reindeer Moss Eater (23.01.03 17:01)
Что скажешь про 4000 год?


 
Reindeer Moss Eater   (2003-01-27 16:57) [27]

Скажу, что Григорианский календарь к этому времени выйдет из употребления


 
Sha ©   (2003-01-28 11:49) [28]

LeapYear:= (Year and 3=0)
and ((Year mod 100<>0)
or (Year and 15=0)
and (Year mod 4000<>0));


 
Anatoly Podgoretsky ©   (2003-01-28 11:58) [29]

Вот жто загадочно (Year and 15=0)


 
Chubais ©   (2003-01-28 12:32) [30]

Sha © (28.01.03 11:49)
поразительно!


 
Sha ©   (2003-01-28 12:34) [31]

2 Anatoly Podgoretsky © (28.01.03 11:58)
Делимость на 16 проверить легче, чем делимость на 400.


 
Sha ©   (2003-01-28 12:58) [32]

2 Chubais © (28.01.03 12:32)
Поразительно хорошо или поразительно плохо?
Если первое, то спасибо.
Если второе, то советую сначала все как следует проверить.



Страницы: 1 вся ветка

Текущий архив: 2003.02.06;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.03 c
1-15651
Максон
2003-01-29 16:24
2003.02.06
как сделать что б при нажатии кнопки на форме, она сворачивалась


4-16006
Delphi5.01
2002-12-21 18:57
2003.02.06
MainMenu s Font


1-15712
Darkwin
2003-01-27 11:58
2003.02.06
Почему так?


1-15748
qwerty2
2003-01-28 10:18
2003.02.06
Отладка DLL


1-15649
malkolinge
2003-01-29 13:46
2003.02.06
Функции обратного вызова и т.ж.