Форум: "Основная";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];
ВнизКак найти последний день месяца? Найти похожие ветки
← →
JetMan (2004-09-20 06:50) [0]Здравствуйте уважаемые эксперты!
Подскажите, есть ли какие-нибудь функций на Delphi для нахождения последнего дня месяца, т.е. узнать сколько дней в месяце. Пример, Февраль 28(29) дней, Январь 31 и т.д.
← →
kukuikar © (2004-09-20 09:14) [1]нет.
пишик код, определяй какой месяц, и соответсвенно указывай последний день. незабудь реализовать проверку на высокосный год, где в феврале 29 дней.
удачи.
← →
TUser © (2004-09-20 09:17) [2]Можно использовать DaysBetween и указать первое число данного месяца и первое число следующего.
← →
Warlord (2004-09-20 09:28) [3]EndOfTheMonth()
← →
Skyle © (2004-09-20 09:35) [4]
> Как найти последний день месяца?
Первый день следующего месяца минус 1.
← →
JetMan (2004-09-20 09:39) [5]Спасибо!!!
← →
mike-d © (2004-09-20 10:19) [6]Еще вариант (из модуля SysUtils)
function IsLeapYear(Year: Word): Boolean;
{ The MonthDays array can be used to quickly find the number of
days in a month: MonthDays[IsLeapYear(Y), M] }
const
MonthDays: array [Boolean] of TDayTable =
((31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31),
(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31));
← →
ghg © (2004-09-20 12:08) [7]не в каждом високосном году в феврале 29 дней
если я все правильно помню
← →
Romkin © (2004-09-20 12:12) [8]ghg © (20.09.04 12:08) [7] Ты хотел сказать "Не в каждом четвертом" :)) IsLeapYear точно определяет, високосный год или нет .
Но лучше - первое число нужного месяца, incMonth и вычесть один день. Skyle © (20.09.04 09:35) [4]
← →
ghg © (2004-09-20 12:14) [9]>Romkin © (20.09.04 12:12) [8] ну да это и хотел сказать
поэтому самодельничеством лучше не заниматься а использовать [4] имхо
← →
DarkMan (2004-09-20 12:32) [10]DaysInMonth
← →
kukuikar © (2004-09-20 13:13) [11]Проверку високосного года дай сам!
function LastDayOfMonth(const nom: Integer): Integer;
begin
case nom of
1: Result:=31;
2: Result:=28;
3: Result:=31;
4: Result:=30;
5: Result:=31;
6: Result:=30;
7: Result:=31;
8: Result:=31;
9: Result:=30;
10: Result:=31;
11: Result:=30;
12: Result:=31;
end;
end;
← →
TUser © (2004-09-20 13:18) [12]
> Проверку високосного года дай сам!
:)
← →
ghg © (2004-09-20 13:20) [13]>kukuikar © (20.09.04 13:13) [11]
вопрос как раз в том какой год високосный а какой нет
см.[7,8]
← →
kukuikar © (2004-09-20 13:21) [14]
> TUser © (20.09.04 13:18) [12]
>
> > Проверку високосного года дай сам!
>
> :)
ну а чё, мне еме все написать и скомпилировать может надо?:)
← →
Skyle © (2004-09-20 13:22) [15]
> вопрос как раз в том какой год високосный а какой нет
IsLeapYear...
Но вот не могу понять, зачем такие извращения...
← →
Coven (2004-09-20 14:12) [16]function GetLastDayMonth( d :TDate): TDate;
var
yyy, mmm, ddd :word;
begin
DecodeDate(d, yyy, mmm, ddd);
mmm:=mmm+1;
if mmm>12 then mmm:=1;
ddd:=1;
Result:=EncodeDate(yyy,mmm,ddd)-1;
end;
← →
Skyle © (2004-09-20 14:30) [17]
> [16] Coven (20.09.04 14:12)
Ой, а можно я тоже свой вариант предложу? ;-)))))))))))function LastDayOfMonth(ADate : TDate) : TDate;
var Y, M, D : Word;
begin
DecodeDate(ADate, Y, M, D);
Result := EncodeDate(Y, M mod 12 + 1, 1) - 1;
end;
← →
Vitaly © (2004-09-20 14:37) [18]И какая дата будет:
LastDayOfMonth("12-dec-2004")
?
← →
SergP. (2004-09-20 14:37) [19]
> [11] kukuikar © (20.09.04 13:13)
> Проверку високосного года дай сам!
>
> function LastDayOfMonth(const nom: Integer): Integer;
> begin
> case nom of
> 1: Result:=31;
> 2: Result:=28;
> 3: Result:=31;
> 4: Result:=30;
> 5: Result:=31;
> 6: Result:=30;
> 7: Result:=31;
> 8: Result:=31;
> 9: Result:=30;
> 10: Result:=31;
> 11: Result:=30;
> 12: Result:=31;
> end;
> end;
function LastDayOfMonth(const nom: byte; const year:word): byte;
begin
case nom of
1: Result:=31;
2: if ((year mod 4 =0) and (year mod 100 >0)) or (year mod 400 = 0)
then Result:=29
else Result:=28;
3: Result:=31;
4: Result:=30;
5: Result:=31;
6: Result:=30;
7: Result:=31;
8: Result:=31;
9: Result:=30;
10: Result:=31;
11: Result:=30;
12: Result:=31;
end;
end;
← →
Skyle © (2004-09-20 14:41) [20]
> [18] Vitaly © (20.09.04 14:37)
Нда... На год внимания не обратил...
Под конец рабочего дня и не такое пишут...;-)
Ну тогда так.function LastDayOfMonth(ADate : TDate) : TDate;
var Y, M, D : Word;
begin
DecodeDate(ADate, Y, M, D);
Result := EncodeDate(Y + Ord(M = 12), M mod 12 + 1, 1) - 1;
end;
← →
SergP. (2004-09-20 14:46) [21]function LastDayOfMonth(const nom: byte; const year:word): byte;
begin
if nom=2
then if ((year mod 4 =0) and (year mod 100 >0)) or (year mod 400 = 0)
then Result:=29
else Result:=28
else if (nom>7) xor (nom mod 2 = 1)
then result:=31
else result:=30;
end;
← →
kukuikar © (2004-09-20 15:05) [22]
> SergP. (20.09.04 14:46) [21]
все, мне кажется это логический конец этой дискуссии.
← →
Ega23 © (2004-09-20 15:08) [23]RXLib, uses DateUtil, FirstDayOfNextMonth-1.
Если последний день N-го месяца, то
IncMonth((FirstDayOfNextMonth-1),N).
← →
art (2004-09-20 19:55) [24]Если имеешь Delphi7
sBuff1:="";sBuff2:="";sBuff3:="";sBuff4:="";yyyy:="";yy:="";mm:="";d1:="";d4:="";dd:="";//????????? ????????
Label1.Caption:=TimeToStr(Time); //time ? ?????
// yy:=AddChar("0", FormatDateTime("yy",Now+0.125), 2); //???
обрати внимание на Now,Yesterday и т.д.^^^^^^^^^^^^^^^^^^^^^^^^ До Delphi7 в Delphi3-5 создавай конструкции case и т.д.
// mm:=AddChar("0", FormatDateTime("mm",Now+0.125), 2); //?????
// d1:=FormatDateTime("dd",Now+0.125); //????
yy:=AddChar("0", FormatDateTime("yy",Yesterday+0.125), 2);//Delphi7 ???
mm:=AddChar("0", FormatDateTime("mm",Yesterday+0.125), 2);//Delphi7 ?????
dd:=AddChar("0", FormatDateTime("dd",Yesterday+0.125), 2);//Delphi7 ????
Label10.Caption:="Yesterday:"+DateToStr(Yesterday); //???? 0 //Delphi7
// d2int:=StrToInt(d1); //????
// d3int:=d2int-1; //???? -1
// d4:=IntToStr(d3int); //????
// dd:=AddChar("0",d4,2); //???? 0
← →
Fay © (2004-09-20 19:59) [25]2 [24] art (20.09.04 19:55)
Это что?! Что-то никак понять не могу.
← →
Isaev (2004-09-20 21:52) [26]Mm:=номер месяца от 1 до 12
/..................../
If Mm=2 Then
Begin
If Gm Mod 4=0 Then I:=29
Else I:=28;
End
Else I:=30+Mm And 1 Xor Mm Shr 3;
/..................../
Я здесь случайно оказался, т.ч. если что не понятно, пиши на мыло
P.S.: тоже что-то слышал о том что не каждый 4 год високосный, но из ненадёжных источников, если кто точно знает напишите на мыло, если не сложно.С уважением Isaev!
← →
Fay © (2004-09-20 21:55) [27]2 [26] Isaev (20.09.04 21:52)
Год является високосным, если он кратен 4.
... Но если он кратен 100, то он не високосный.
... Но если он кратен 400, то он всё-таки високосный 8)
← →
SergP. (2004-09-21 07:26) [28]
> [22] kukuikar © (20.09.04 15:05)
>
> > SergP. (20.09.04 14:46) [21]
>
> все, мне кажется это логический конец этой дискуссии.
Ну при желании можно еще немножко поизвращаться:
function LastDayOfMonth(const nom: byte; const year:word): byte;
begin
if nom=2
then if ((year and 3 = 0) and (year mod 25 > 0)) or (year and 15 = 0)
then Result:=29
else Result:=28
else result:=Month shr 3 xor Month and 1 or 30;
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.048 c