Wochentag aus Datum

Hallo Forum!

Hat jemand von Euch einen Codeschnipsel in C,
der von einem Datum (Tag,Monat,Jahr) den Wochentag zurückgibt?

Ich habe mir das so vorgestellt:
char wochentag(int t,int m, int j)
wobei 1=Mo, 2=Di etc.

Mir fehlt der Ansatz :frowning:

Thomas

Hallo Forum!

Hi Thomas.

Hat jemand von Euch einen Codeschnipsel in C,
der von einem Datum (Tag,Monat,Jahr) den Wochentag zurückgibt?

Ich habe mir das so vorgestellt:
char wochentag(int t,int m, int j)
wobei 1=Mo, 2=Di etc.

Mir fehlt der Ansatz :frowning:

Das kannst du ganz einfach den (z.B. heutigen) Wochentag ermitteln:

 struct tm \*LokalZeit;
 time\_t Zeit;

 time(&Zeit);
 LokalZeit = localtime(&Zeit);
 
 printf("Heute ist %d. (0=Sonntag)\n", LokalZeit-\>tm\_wday);

Schau mal in der Hilfe zu localtime() nach. Da steht beschrieben, welche Elemente die Struktur tm alles hat. Unter anderem auch die Variable tm_wday die den Wochentag zurück gibt. Wenn es nicht das aktuelle Datum sein soll, dann wird dir die Hilfe zu der Fumnktion time() bestimmt weiter helfen.

Gruss Jens

Möglichkeit für den Wochentag:

enum Wochentag {Montag = 0,Dienstag,Mittwoch…}

ist vielleicht geschickter als ein char, da Du Wochentag wie ein int behandeln kannst.

Gruss, Christof

Hi Christof

Möglichkeit für den Wochentag:

enum Wochentag {Montag = 0,Dienstag,Mittwoch…}

enum Wochentag {Sonntag = 0, Montag, Dienstag ...}

wäre vielleicht besser, da localtime() die Woche bei Sonntag beginnen läßt. Für die Ausgabe hilft das allerdings immer noch nicht weiter, weil ein enum{} bekanntlich nicht als Zeichenkette ausgegeben werden kann.

ist vielleicht geschickter als ein char, da Du Wochentag wie
ein int behandeln kannst.

Ein char kannst du (quasi) auch als int verwenden (nur das da nicht so viel reinpasst, aber für die Wochentage sollten auch 256 verschiedene Zahlen reichen :wink: )

Gruss Jens