Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Monatsberechnung: 30 oder 31 Tage herrausfinden (https://www.delphipraxis.net/135159-monatsberechnung-30-oder-31-tage-herrausfinden.html)

Fussel9 5. Jun 2009 17:45


Monatsberechnung: 30 oder 31 Tage herrausfinden
 
Hi, vergeht ja kaum ein Tag ohne Probleme ^^

ich will das mein Programm aus einer Ini Werte wie gefahrene Kilometer und so ausließt und für den ganzen Monat ausrechnet, aber wie bekomme ich herraus ob der Monat 30 oder 31 Tage hat?

Hoffe irgendwer hat ne Idee :o

mkinzler 5. Jun 2009 17:50

Re: Monatsberechnung: 30 oder 31 Tage herrausfinden
 
EndOfMonth() aus den DateUtils

Satty67 5. Jun 2009 17:52

Re: Monatsberechnung: 30 oder 31 Tage herrausfinden
 
DateUtils bietet da entsprechende Funktionen, sofern >= Delphi7 (oder schon Delphi 6)

ups... 2 Minuten im Editor geschlafen

Fussel9 5. Jun 2009 17:52

Re: Monatsberechnung: 30 oder 31 Tage herrausfinden
 
Zitat:

aus den DateUtils
sorry, aber was sind die DateUtils... bin leider noch anfänger :wink:

Ich habe TurboDelphi

Satty67 5. Jun 2009 17:54

Re: Monatsberechnung: 30 oder 31 Tage herrausfinden
 
Datums-Hilfsmittel :mrgreen:

Uses
DateUtils;

Fussel9 5. Jun 2009 18:02

Re: Monatsberechnung: 30 oder 31 Tage herrausfinden
 
Ok, hab mir die Hilfe mal durchgelesen:

Zitat:

Syntax


[Delphi] function EndOfAMonth(const AYear: Word; const AMonth: Word): TDateTime;


Beschreibung
EndOfAMonth gibt die letzte Millisekunde (23:59:59.999 Uhr) des letzten Tages im angegebenen Monat zurück.

Der Parameter AYear gibt das Jahr mit dem gewünschten Monat an.

Der Parameter AMonth gibt den Monat an. Gültige Werte für AMonth liegen zwischen 1 und 12.

Geben die Parameter kein gültiges Datum an, löst EndOfAMonth eine EConvertError-Exception aus.
Aber was soll ich mit der Millisekundenangabe???
Oder ist das im beispiel der Februar?

Und vor allem:
Ich habe ein EditFeld in das der benutzer das Datum selbst eingibt ich habe also höchstens einen Date wert (StrToDate) und nie den Monat einzeln und so... :coder2:

mkinzler 5. Jun 2009 18:05

Re: Monatsberechnung: 30 oder 31 Tage herrausfinden
 
Es wird ein TDateTime der letzen Sekunde des letzen Tages zurückgeliefert.

Fussel9 5. Jun 2009 18:08

Re: Monatsberechnung: 30 oder 31 Tage herrausfinden
 
ja ok, das hab ich schon verstanden, aber ich will ja alle Daten abfragen die von dem aktuellen Monat kommen und ich kann doch nicht eine TDate mit einem TDateTime vergleichen oder?

BackOrifice 5. Jun 2009 18:09

Re: Monatsberechnung: 30 oder 31 Tage herrausfinden
 
Lies ein bisschen und mach dich schlau. TDateTime ist ein Extended. Alle Tage seit dem xx.xx.xxxx sind der Ganzzahlige Anteil. Alle Sekunden an diesem Tag der Nachkommateil.

Was du suchst ist DateUtils.DaysInAMonth. Die Parameter musst du dir entsprechend selbstzusammenbasteln (Funktionen in DateUtils).

/TDate = 12345,xxx (x undefiniert)
TDateTime = 12345,12345

omata 5. Jun 2009 18:13

Re: Monatsberechnung: 30 oder 31 Tage herrausfinden
 
Alternativ kannst du auch mal deine Fingerknöchel befragen (einfache aber effektive Regel), denn die Anzahl an Tagen in einem Monat ist immer gleich (Ausnahme: Februar). Deine Frage muss also eigentlich lauten, wie ermittle ich ein Schaltjahr, um für den Monat Februar die korrekte Länge zu ermitteln.

Delphi-Quellcode:
function isSchaltjahr(jahr:integer):boolean;
begin
  Result:=(jahr mod 4 = 0) and (jahr mod 100 <> 0) or (jahr mod 400 = 0);
end;
Wenn Schaltjahr dann Februar = 29 Tage sonst 28 Tage.

Larsi 5. Jun 2009 18:15

Re: Monatsberechnung: 30 oder 31 Tage herrausfinden
 
Zitat:

Zitat von omata
denn die Anzahl an Tagen in einem Monat ist immer gleich (Ausnahme: Februar).

:?: :stupid: :mrgreen:

omata 5. Jun 2009 18:18

Re: Monatsberechnung: 30 oder 31 Tage herrausfinden
 
Na gut, für die Klugscheißer...

Zitat:

Zitat von omata
...denn die Anzahl an Tagen, in den einzelnen Monaten eines Jahres, ist immer gleich (Ausnahme: Februar)...


omata 5. Jun 2009 18:28

Re: Monatsberechnung: 30 oder 31 Tage herrausfinden
 
Zitat:

Zitat von omata
Na gut, für die Klugscheißer...

Zitat:

Zitat von omata
...denn die Anzahl an Tagen, in den einzelnen Monaten eines Jahres, ist immer gleich (Ausnahme: Februar)...


@Larsi: ist nicht böse gemeint :hi:

Fingerknöchel-Regel...
Delphi-Quellcode:
function TageImMonat(Monat, Jahr:integer):byte;
begin
  case Monat of
     1: Result:=31;
     2: if Schaltjahr(Jahr) 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;
  else
    Result:=0;
  end;
end;

Fussel9 5. Jun 2009 18:37

Re: Monatsberechnung: 30 oder 31 Tage herrausfinden
 
Ok, danke für die weiteren Tips, habe in der Delphi Hilfe folgendes gefunden:

Delphi-Quellcode:
DaysInMonth(date)
Das gibt allerdings einen Word wert heraus der die anzahl der Tage enthält für den Monat des in den Klammern angegebenen Datumswertes, also z.B. date oder Now für das aktuelle Datum:
Beschreibung
Mit DaysInMonth können Sie die Anzahl der Tage in dem Monat abrufen, der durch den mit AValue angegebenen TDateTime-Wert repräsentiert wird.

ABER WIE KANN ICH EINEN WORD WERT IN EINEN STRING UMWANDELN???

mkinzler 5. Jun 2009 18:39

Re: Monatsberechnung: 30 oder 31 Tage herrausfinden
 
Zitat:

ABER WIE KANN ICH EINEN WORD WERT IN EINEN STRING UMWANDELN???
WORD ist ein Integertyp deshalb

IntToStr() oder Format()

BTW: Bitte nicht schreien!!!

Fussel9 5. Jun 2009 18:40

Re: Monatsberechnung: 30 oder 31 Tage herrausfinden
 
Sorry :oops:
Aber Trotzdem Danke an alle :)

Jürgen Thomas 5. Jun 2009 18:48

Re: Monatsberechnung: 30 oder 31 Tage herrausfinden
 
Zitat:

Zitat von Fussel9
ABER WIE KANN ICH EINEN WORD WERT IN EINEN STRING UMWANDELN???

Wozu denn das überhaupt? Du willst doch mit dieser Angabe irgendetwas berechnen. Dann solltest du es bei einer Zahl belassen. (Erst am Schluss, wenn das Ergebnis angezeigt werden soll, ist die Umwandlung relevant.) Jürgen

Fussel9 5. Jun 2009 19:27

Re: Monatsberechnung: 30 oder 31 Tage herrausfinden
 
Weil ich eingabefelder für das datum habe und diese speichern alle eingegebenen werte wie gefahrene kilometer und co. unter dem datum als section, nun will ich alle werte des monats auslesen, dafür brauche ich das datum natürlich als String...

mkinzler 5. Jun 2009 19:29

Re: Monatsberechnung: 30 oder 31 Tage herrausfinden
 
In eine Ini kannst du aber auch andere Typen als String Speichern

Fussel9 5. Jun 2009 19:46

Re: Monatsberechnung: 30 oder 31 Tage herrausfinden
 
ok, das stimmt...


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:15 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz