title image


Smiley ...hier meine Lösung deines Datumsdifferenz Problems
Mann das ist aber ein Quick-Hack *grin*



Die Ausgabe meiner Version:



[descartes@pilgrim]$ g++ -o main_timedifference main_timedifference.cpp

[descartes@pilgrim]$ ./main_timedifference

Heute ist der 2002-8-9

Bis zu meinem Geburtstag am 2002-11-26 sind es noch 3 Monate und 19 Tage.



[descartes@pilgrim]$





Hier ein Programm das wenigsten ANSI/ISO C++ konform ist.



Auch dein Hack, dass alle Monate pauschal mit Länge 30 Tage angenommen wurden habe ich entfernt. Für was gibt es wohl die Funktion datediff() ??





1 /* File: main_timedifference.cpp

2 *

3 * This program calculates the exact time difference between today and November 26th

4 */

5

6 #include <iostream> /* std::cout std::endl */

7 #include <ctime> /* time_t localtime() struct tm difftime() */

8

9 int main()

10 {

11 const int Geburtstag_Tag = 26;

12 const int Geburtstag_Monat = 11;

13

14 const time_t now=time((time_t*)NULL); // "calendar time" in Sekunden seit 1970-01-01 00:00:00 GMT

15 const struct tm *TM=localtime(&now); // konvertiere die "calendar time" in die lokalen Zeit

16 // unter Beruecksichtigung der lokalen Zeitzone

17

18 const int Heute_Tag = TM->tm_mday;

19 const int Heute_Monat = TM->tm_mon + 1;

20 const int Heute_Jahr = TM->tm_year + 1900;

21

22 // falls wir schon drueber sind, dann berechnen wir die Zeit bis zum

23 // Geburtstag im naechsten Jahr

24 int Jahr = TM->tm_year;

25

26 if ((Heute_Monat > Geburtstag_Monat)

27 || (Heute_Monat == Geburtstag_Monat && Heute_Tag > Geburtstag_Tag))

28 ++Jahr;

29

30 // wir fuellen ein struct tm mit den Werten fuer den Geburtstag

31 // struct tm geburtstag = {0, 0, 0, Geburtstag_Tag, Geburtstag_Monat-1, Jahr, 0, 0, 0 };

32

33 struct tm geburtstag = {0}; // alle Member mit Wert 0 vorbelegen

34

35 geburtstag.tm_year = Jahr;

36 geburtstag.tm_mon = (Geburtstag_Monat - 1);

37 geburtstag.tm_mday = Geburtstag_Tag;

38

39 time_t Zeitdifferenz = (time_t)difftime( mktime(&geburtstag), now );

40

41 struct tm *DIFFERENZ = localtime(&Zeitdifferenz);

42 int iMonthLeft = DIFFERENZ->tm_mon;

43 int iDaysLeft = DIFFERENZ->tm_mday;

44

45 std::cout << "Heute ist der " << Heute_Jahr << "-" << Heute_Monat << "-" << Heute_Tag

46 << std::endl

47 << "Bis zu meinem Geburtstag am "

48 << (1900 + Jahr) << "-" << Geburtstag_Monat << "-" << Geburtstag_Tag << " sind es noch "

49 << iMonthLeft << " Monate und " << iDaysLeft << " Tage. "

50 << std::endl << std::endl;

51

52 return 0;

53 }

54

Listing 1: main_timedifference.cpp



geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: