vieviel tage hat ein monat?



  • Hallo,

    gibt es eine funktion mit dessen hilfe ich mein programm weiß wieviele tage der monat hat? oder muss ich mir da selber eine funktion zusammen basteln?



  • schau Dir mal die Hilfe zu "TDate" an. Falls Dir das nicht gefällt: es gibt im INet offenbar jede Menge Funktionen, die sich mit Datumsberechnungen beschäftigen.

    Ich hab mir aus Interesse mal meine eigene Funktion gebastelt (mit Feiertagsberechnung). Die Infos dazu hab ich mir ebenfalls aus dem INet besorgt.... Gute Suche! (nur so lernt man wirklich was für's Leben!)



  • Als ich den Immerwährenden Kalender baute, hatte ich nichts dgl. gefunden. Hatte dann den Algor aus einem QBasic-Beispiel für die VCL umgeschrieben und zu einer App erweitert.

    <edit>Monat ist ohnehin nicht gleich Monat. Der Kaufmann kennt zB. 30 Tage für den Monat, bis 14 Monate für das Jahr. :p </edit>



  • 14 Monate für ein Jahr??? 😮 Ich hab auch was kaufmännisches gelernt, aber wir haben nie mit 14 Monaten gerechnet... Mit 30 Tagen/Monat schon!?

    Allerdings hab ich mal einen Bug gesehen, wo wir irrtümlich einen 13. Monat angelegt hatten. Der Termin wurde natürlich nie wieder von irgendeinem Programm aufgegriffen... Aber das is eine andere Geschichte.

    Abgesehen davon. Die Anzahl der Tage pro Monat is ja wohl kein Problem. Und die Schaltjahresregelung is auch nicht schwer...

    Schaltjahr liegt vor, wenn Jahr glatt durch 4 teilbar ist. Ist das Jahr (Format JJJJ) glatt durch 100 teilbar, gibt es kein Schaltjahr, es sei denn, das Jahr is glatt durch 400 teilbar. Und damit sollte Manuel schon weiterkommen...



  • bool istSchaltjahr(int jahr)
    {
       if(jahr%400==0) return true;
       if(jahr%100==0) return false;
       if(jahr%  4==0) return true;
       return false;
    }
    int wievieleTageHatMonat(int monat,int jahr)
    {
       if(monat==2)
          if(!istSchaltjahr(jahr))
             return 28;
          else
             return 29;
       else if(monat==4¦¦monat==6¦¦monat==9¦¦monat==11)
          return 30;
       else 
          return 31;
    };
    bool datumIstGueltig(int tag,int monat,int jahr)
    {
       if(monat<1) return false;
       if(monat>12) return false;
       if(tag<1) return false;
       if(tag>wievieleTageHatMonat(monat,jahr)) return false;
       return true;
    };
    


  • warum machst du kein array ? und prüfst den februar auf nen schaltjahr 😉
    Einfacher und schneller gehts nicht 😉

    damit ersetzt du volkards lösung mit 4 zeilen 😉

    [ Dieser Beitrag wurde am 09.03.2003 um 01:16 Uhr von 1ntrud0r editiert. ]



  • @JFK, die 2 zusätzlichen Monate sind/waren reine mögliche Billanzmonate. Moderne Rechnungswerke und der PC mögen sie aber gänzlich abgeschafft haben.



  • Original erstellt von <Omega-X>:
    @JFK, die 2 zusätzlichen Monate sind/waren reine mögliche Billanzmonate. Moderne Rechnungswerke und der PC mögen sie aber gänzlich abgeschafft haben.

    [offtopic]
    Die 2 zusätzlichen Monate gibts auch bei Monatsgehältern ...
    [/offtopic]



  • mag ja sein, daß es 13 oder 14 monatsgehälter gibt. Aber gibt es tatsächlich jemand, der das als 13. und 14. Monat abbildet??????????????



  • Na. In der Lohnbuchhaltung werden die Gesamtbezüge und Abgaben für den Bezugsmonat berechnet. - Hab's doch nur gaghalber erwähnt. :p Genaues sagen können sicher nur Billanzbuchhalter. In der Praxis baut man ja Terminkalender und ähnliches.



  • wollte mir doch auch sein. Aber nicht, daß das jemand für bare Münze nimmt und ein "falsches Weltbild" kriegt. Schließlich soll man hier ja nur richtiges lernen... 😉

    Aber is der Volkard nicht ein kleiner Böser, wenn er Fertiglösungen präsentiert? Wo bleibt denn da die Eigeninitiative?

    Was meinen denn die Forum-Mods dazu?



  • Die meinen, dass der Thread inzwischen soweit vom eigentlichen Thema abgedriftet ist, dass weitere OffTopic-Beiträge kommentarlos gelöscht werden. 🙂



  • ich böser warte eigentlich auf die schnellere lösung mit dem array.
    manchmal setze ich fertiglösungen, um zu zeigen, wie ichs machen mag. newbies brauchen ja auch mal was zum abgucken, um sich nen stil anzueignen.



  • Bevor mich der Jansen löscht, sag ich nix mehr dazu.... 😃 Vielleicht nur folgendes zu Volkard: auch kein schlechter Ansatz. 😉



  • Nicht 'logisch' sondern mathematisch geht's auch:

    TDate Date1,Date2;
      int Tage;
      Date1=EncodeDate(CSpinEdit2->Value,CSpinEdit1->Value,1);
      if (CSpinEdit1->Value<12)
        Date2=EncodeDate(CSpinEdit2->Value,CSpinEdit1->Value+1,1);
      else
        Date2=EncodeDate(CSpinEdit2->Value+1,1,1);
      Tage=Date2.operator double() -Date1.operator double();
    

    !!! Lass doch das System rechnen !!! 🙂 (Ist doch ein RECHNER 😃 )

    PS: Monat und Jahr kommen aus CSpinEdit in Testform.
    Koennen inn 'ner Funktion auch 2 Parameter sein!)

    Edit:
    Bei mehr als drei Zeilen bitte die Code-Tags benutzen. Danke!

    [ Dieser Beitrag wurde am 09.03.2003 um 17:14 Uhr von Jansen editiert. ]


Anmelden zum Antworten