Текущий архив: 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.5 MB
Время: 0.011 c