WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   Datum Algorithmen gesucht (http://www.wcm.at/forum/showthread.php?t=79331)

Kamikaze 04.12.2002 16:07

Datum Algorithmen gesucht
 
Hallo!

Kennt jemand von euch eine gute Seite mit Algorithmen (insbesondere für Datum)?

Ich muss nämlich zu einem Datum eine best. Anzahl von Monaten addieren und will das Enddatum herausbekommen.

Selbst programmieren könnte ich es wahrscheinlich auch, aber ich brauche es schnell und sollte zu 100% funktionieren (da für eine Bankanwendung).

Danke im voraus

kikakater 04.12.2002 17:59

Code:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

typedef struct {
 int tag_quelle_und_ziel
    ,monat_quelle_und_ziel
    ,jahr_quelle_und_ziel
    ,differenz_tag_plusminus
    ,differenz_monat_plusminus
    ,differenz_jahr_plusminus
    ,schalter_dochnichtquelle; /* 1 .. Tagesdatum einsteuern */
} DATUMPARAMETER;

int BerechnungDifferentesDatum(DATUMPARAMETER *pDatum);

int main( void )
{
 DATUMPARAMETER sDatum;

 memset(&sDatum,0,sizeof(sDatum));

 printf("Tag  : "); scanf("%d",&sDatum.differenz_tag_plusminus);
 printf("Monat: "); scanf("%d",&sDatum.differenz_monat_plusminus);
 printf("Jahr : "); scanf("%d",&sDatum.differenz_jahr_plusminus);

 sDatum.schalter_dochnichtquelle= 0;

 sDatum.tag_quelle_und_ziel = 1;
 sDatum.monat_quelle_und_ziel = 12;
 sDatum.jahr_quelle_und_ziel = 1980;

 if( BerechnungDifferentesDatum(&sDatum) < 0 )
 { printf("Fehler bei der Datumsberechnung\n"); exit(0); }

 printf("Das Datum lautet %02d.%02d.%04d\n"
 ,sDatum.tag_quelle_und_ziel
 ,sDatum.monat_quelle_und_ziel
 ,sDatum.jahr_quelle_und_ziel);

 return 0;
}

/* Datum berechnen ... ! intern ! Monat 0 - 11, Jahr 0 - 127, Basis 1900 */
int BerechnungDifferentesDatum(DATUMPARAMETER *pDatum)
{
 struct tm s_tm,*ps_tm;
 time_t time_t_r;

 if(pDatum->schalter_dochnichtquelle == 1)
 {
  time_t_r= time(NULL);
  ps_tm= localtime(&time_t_r);
  pDatum->tag_quelle_und_ziel= ps_tm->tm_mday;
  pDatum->monat_quelle_und_ziel= ps_tm->tm_mon;
  pDatum->jahr_quelle_und_ziel= ps_tm->tm_year;
 }
 else
 {
  pDatum->monat_quelle_und_ziel--;
  pDatum->jahr_quelle_und_ziel -= 1900;
 }

 memset(&s_tm,0,sizeof(s_tm));

 s_tm.tm_mday= pDatum->tag_quelle_und_ziel + pDatum->differenz_tag_plusminus;
 s_tm.tm_mon=  pDatum->monat_quelle_und_ziel + pDatum->differenz_monat_plusminus;
 s_tm.tm_year= pDatum->jahr_quelle_und_ziel + pDatum->differenz_jahr_plusminus;

 time_t_r= mktime(&s_tm);

 ps_tm= localtime(&time_t_r);
 if(!ps_tm) return -1;

 pDatum->tag_quelle_und_ziel= ps_tm->tm_mday;
 pDatum->monat_quelle_und_ziel= ps_tm->tm_mon+1;
 pDatum->jahr_quelle_und_ziel= ps_tm->tm_year+1900;

 return 0;
}


_m3 04.12.2002 18:10

http://theoryx5.uwinnipeg.ca/mod_per...at;catinfo=612


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:54 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag