Zu Datum eine Woche addieren



  • Hallo,

    ich muss regelmäßig Listen der Form 21.1.2010, 28.1.2010, 4.2.2010, ... erstellen. Von Hand ist das auf Dauer ein wenig aufwändig, daher dachte ich, es ist vielleicht möglich dies mit C++ zu vereinfachen. Vom Prinzip her hätte ich gerne so ein Programm:

    Startdatum = 21.1.2010;
    Datum = Startdatum;
    Anzahl_Wochen = 3;
    for (int i=0; i<3; i++){
      schreibe Datum in Textdatei;
      Datum = Datum + eine Woche;
    }
    

    Geht das in C++ ohne zu viel von Hand selber programmieren zu müssen? Falls ja, kann mir jemand einen Tipp geben wie?

    Gruß und vielen Dank
    Soldberg

    (falls relevant: ich programmiere unter Linux)



  • Probiers mal mit dem timestamp von einem datum und addiere dann die anzahl der sekunden einer woche; sollte nicht allzu schwer sein;

    http://www.cplusplus.com/reference/clibrary/ctime/

    MFG



  • Kleine Fleissaufgabe! Hau die ursprünglichen Datumangaben in einen long int der Form 20100107 und addiere 7 (so viele Tage hat eine Woche). Für das Jahr und den Monat musst du dir etwas einfallen lassen. Dann musst du nur noch in das gewünschte neue Datum zurück wandeln. daddeldu!



  • berniebutt schrieb:

    Kleine Fleissaufgabe! Hau die ursprünglichen Datumangaben in einen long int der Form 20100107 und addiere 7 (so viele Tage hat eine Woche). Dann musst du nur noch in das gewünschte neue Datum zurück wandeln. daddeldu!

    Dann hatt ein monat 99 tage und ein jahr 99monate 😉



  • Das geht mit Boost.date_time.
    Beispiel:

    #include <iostream>
    #include <boost/date_time/gregorian/gregorian.hpp>
    
    int main()
    {
      using namespace boost::gregorian;
      date cdate(2010,1,1);
      cdate+=date_duration(7);
      std::cout << cdate.day() << '.' << static_cast<int>(cdate.month()) << '.' << cdate.year() << std::endl;
    }
    


  • @XBertDann: Ja, hatte ich selbst schon gemerkt und korrigiert. Der Ansatz ist aber richtig, wenn man nicht auf fremde LIB-Funktionen zurückgreifen will.



  • vielen Dank für die schnellen Antworten!

    berniebutt schrieb:

    Der Ansatz ist aber richtig, wenn man nicht auf fremde LIB-Funktionen zurückgreifen will.

    Auf fremde LIB-Funktionen zugreifen zu müssen stört mich nicht.

    Athar schrieb:

    Das geht mit Boost.date_time

    Klasse, genau so etwas habe ich gesucht!


Anmelden zum Antworten