Autor |
Beitrag |
Josef-B
      
Beiträge: 293
2003 Server, Win7, Win8
Delphi 2010 Pro, Firebird 2.5
|
Verfasst: Do 22.07.04 17:56
Kann mir jemand sagen ob und wie es möglich ist, den letzten Tag eines Monats zu berechnent.
Also Eingabe Februar - Ausgabe 28 oder 29.
Eingabe Juni Ausgabe 30.
Eingabe Juli > Ausgabe 31. ?
Den Wert für den Monat habe ich ja z.B. über decodedate.
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Do 22.07.04 18:03
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
maxk
      
Beiträge: 1696
Erhaltene Danke: 1
Win XP, Debian Lenny
Delphi 6 Personal
|
Verfasst: Do 22.07.04 18:34
Die folgende Funktion ist nicht wirklich einfacher, aber sie funktioniert auch ohne die SysUtils, was manchmal ganz praktisch ist: Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| function DaysOf(Month,Year:integer):integer; begin case Month of 2: if (((Year mod 4)=0) and ((Year mod 100)>0)) or (Year mod 400)>0) then Result:=29 else Result:=28; 1,3..7: if (Month mod 2)=1 then Result:=31 else Result:=30; 8..12: if (Month mod 2)=1 then Result:=30 else Result:=31; else Result:=0; end; end; |
//Edit: Year mod 400 ergänzt
_________________ Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
Zuletzt bearbeitet von maxk am Do 22.07.04 23:13, insgesamt 1-mal bearbeitet
|
|
Josef-B 
      
Beiträge: 293
2003 Server, Win7, Win8
Delphi 2010 Pro, Firebird 2.5
|
Verfasst: Do 22.07.04 22:03
Danke Euch für die schnelle Antwort,
werde ich mich gleich morgen dran setzen und es ausprobieren 
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Do 22.07.04 22:10
@maxk: Wenn das Jahr durch 400 teilbar ist, dann wird ein Schalttag eingefügt! 
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Josef-B 
      
Beiträge: 293
2003 Server, Win7, Win8
Delphi 2010 Pro, Firebird 2.5
|
Verfasst: Do 22.07.04 22:20
da sollen sich dann mal andere ne Birne machen  , Ob die dann auch noch in Delphi proggen?
|
|
UGrohne
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: Do 22.07.04 22:44
Ähm, ein kleiner Hinweis: Ihr braucht nicht das Rad neu zu erfinden. In der Unit DateUtils gibt es Funktionen ohne Ende für solche Dinge, z.B.
Delphi-Hilfe hat folgendes geschrieben: | Die Funktion gibt die Anzahl der Tage im angegebenen Monat eines angegebenen Jahres zurück.
Unit
DateUtils
Kategorie
Datum/Zeit
Delphi-Syntax:
function DaysInAMonth(const AYear, AMonth: Word): Word;
C++ Syntax:
extern PACKAGE Word __fastcall DaysInAMonth(const Word AYear, const Word AMonth);
Beschreibung
Mit DaysInAMonth können Sie die Anzahl der Tage eines Monats im angegebenen Jahr ermitteln.
AYear gibt ein Jahr zwischen 1 und 9999 (inklusive) an.
AMonth gibt einen Monat zwischen 1 und 12 (inklusive) an. |
|
|
maxk
      
Beiträge: 1696
Erhaltene Danke: 1
Win XP, Debian Lenny
Delphi 6 Personal
|
Verfasst: Do 22.07.04 23:14
Peter Lustig hat folgendes geschrieben: | @maxk: Wenn das Jahr durch 400 teilbar ist, dann wird ein Schalttag eingefügt!  |
Hab's geändert 
_________________ Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
|
|
Amiga-Fan
      
Beiträge: 534
|
Verfasst: Do 20.01.05 13:31
ok hier gibt es doch noch einen Thread dazu.
Ich will darauf hinweisen, DaysInAMonth statt DaysInMonth zu benutzen. Letzteres berücksichtigt das Jahr und somit die Schaltjahre nicht.
|
|
CenBells
      
Beiträge: 1547
Win 7
Delphi XE5 Pro
|
Verfasst: Do 20.01.05 13:36
Amiga-Fan hat folgendes geschrieben: | ok hier gibt es doch noch einen Thread dazu.
Ich will darauf hinweisen, DaysInAMonth statt DaysInMonth zu benutzen. Letzteres berücksichtigt das Jahr und somit die Schaltjahre nicht. |
Hi,
wie ich dir in dem anderen Beitrag schon geantwortet habe, ist die Behauptung falsch.
DaysInMonth und DaysInAMonth funktioneren beide gleich.
Gruß
Ken
_________________ Eine Klasse beschreibt die Struktur und das Verhalten einer Menge gleichartiger Objekte.
|
|
Amiga-Fan
      
Beiträge: 534
|
Verfasst: Do 20.01.05 13:40
tut mir leid, ein Kunde hat uns eine Fehlermeldung dabei übermittelt. "29.02.1999 ist kein gültiges Datum". Und ich habe diese Funktion benutzt. Ich habe es ersetzt und jetzt geht es. Aber von mir aus, glaub es eben nicht.
Edit: hier ist der Link zu dem anderen Thread: www.delphi-forum.de/...13946&highlight=
|
|
Spaceguide
      
Beiträge: 552
(D3/D7/D8) Prof.
|
Verfasst: Do 20.01.05 15:39
Delphi-Quelltext 1:
| if ( ((Year mod 4)=0) and ((Year mod 100)>0) ) or (Year mod 400)>0) then Result:=29 else Result:=28; |
Hmm, frage mich gerade, warum das nicht (Year mod 400=0) heisst.
Zitat: | Von Papst Gregor XIII. wurde daher 1582 folgende Regelung eingeführt (Gregorianischer Kalender):
* Glatt durch 4 teilbare Jahre sind Schaltjahre.
* Glatt durch 100 teilbare Jahre sind jedoch keine Schaltjahre.
* Glatt durch 400 teilbare Jahre sind aber wieder Schaltjahre.
|
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Do 20.01.05 21:27
Naja, etwas übersichtlicher mach ich's immer mit
Delphi-Quelltext 1:
| If ((Year mod 4 = 0) and (Year mod 100 <> 0)) or (Year mod 400 = 0) Then Schaltjahr; |
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|