Announcement

Collapse
No announcement yet.

Anzahl Tage zum Monat?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Anzahl Tage zum Monat?

    Hallo,

    Mir ist bei Aufruf einer Funktion das Jahr und der Monat bekannt. Wie kann ich ermitteln, wie viele Tage der jeweilige Monat hat. Dabei soll auch der 29.2. berücksichtigt werden.

    Gruß Andreas

  • #2
    Hallo,<br>
    <br>
    folgendermaßen:<br>
    <pre>
    <i>// -----</i>
    <b>const</b>
    dayTab:<b>array</b>[0..11] of Integer=(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
    <b>function</b> DaysOfMonth(aMonth, aYear:Integer):Integer;
    <b>begin</b>
    <b>if</b> (aMonth <b>in</b> [1..12]) <b>then</b>
    <b>begin</b>
    Result:=dayTab[aMonth-1];
    <b>if</b> IsLeapYear(aYear) <b>then</b> Inc(Result);
    <b>end else</b> Result:=-1;
    <b>end;</b>
    <i>// -----</i>
    </pre&gt

    Comment


    • #3
      Hallo,

      da gibt es doch was:

      function DaysInAMonth(const AYear, AMonth: Word): Word;

      unit: Dateutils.

      Grüße

      Juli

      Comment


      • #4
        Danke!!

        Comment


        • #5
          Nicht das ich mittlerweile Delphi gelernt hätte, aber ich habe den Eindruck, daß bei Thomas Version alle Monate einen Tag mehr haben, wenn es ein Schaltjahr ist... Mir fehlt da irgenwie die Abfrage auf Februar, vor dem Inc(Result).

          Grüße Joche

          Comment


          • #6
            Hallo,

            @Jochen: Du hast recht, ich habe da einen kleinen Fehler eingebaut. Richtig muss die Abfrage bzgl Schaltjahr lauten:
            <pre>
            ...
            <b>if</b> (aMonth=2) <b>then</b>
            <b>if</b> IsLeapYear(aYear) <b>then</b> Inc(Result);
            </pre>

            @Julia:
            Meines Wissens nach gibt es DaysInAMonth erst ab D6

            Comment


            • #7
              Gut möglich,

              z. Zeit von D6 bin ich auf Delphi umgestiegen...

              Allerdings könnte es ja sein, dass Andreas D6 oder D7 hat. :-

              Comment


              • #8
                Ich hab D5. Und das mit dem fehlenden Monat hab ich schon gemerkt. Trotzdem danke

                Comment


                • #9
                  Hallo Andreas

                  Wenn Du den Ersten des nächsten Monats nimmst und diesen DateTime-Wert minus 1 rechnest, bekommst Du mit DecodeDate den letzten Tag des Monats.

                  Ciao Wolfgan
                  In God we trust - all others pay cash!

                  Comment

                  Working...
                  X