Archiv verlassen und diese Seite im Standarddesign anzeigen : [C++] was alla Date()
hi,
in Java gibt es ja Date(), was ein Datum alla "Tue Aug 12 23:00:04 CEST 2003" ausgibt.
wie gebe genau dieses in C++ wieder?
Berufspenner
12-08-2003, 22:13
Hi
Guck dir mal time.h an:
http://www.cplusplus.com/ref/ctime/
Cu
André
ctime () gibts so aus: Tue Aug 12 23:50:11 2003
wie mach ich von 2003 noch ein CEST?
ich habs so gelöst:
char time_string[300], tag[3], monat[3];
int tag_n, monat_n;
time_t rawtime;
tm * ptm;
time( &rawtime );
ptm = gmtime( &rawtime );
tag_n = ptm->tm_wday;
monat_n = ptm->tm_mon;
switch(tag_n)
{
case 0: strcpy(tag, "Sun"); break;
case 1: strcpy(tag, "Mon"); break;
case 2: strcpy(tag, "Tue"); break;
case 3: strcpy(tag, "Wed"); break;
case 4: strcpy(tag, "Thu"); break;
case 5: strcpy(tag, "Fri"); break;
case 6: strcpy(tag, "Sat"); break;
}
switch(monat_n)
{
case 0: strcpy(monat, "Jan"); break;
case 1: strcpy(monat, "Feb"); break;
case 2: strcpy(monat, "Mar"); break;
case 3: strcpy(monat, "Apr"); break;
case 4: strcpy(monat, "May"); break;
case 5: strcpy(monat, "Jun"); break;
case 6: strcpy(monat, "Jul"); break;
case 7: strcpy(monat, "Aug"); break;
case 8: strcpy(monat, "Sep"); break;
case 9: strcpy(monat, "Oct"); break;
case 10: strcpy(monat, "Nov"); break;
case 11: strcpy(monat, "Dec"); break;
}
sprintf(time_string, "%s %s %2d %2d:%2d:%2d CEST %2d", tag, monat, ptm->tm_mday,ptm->tm_hour+2, ptm->tm_min, ptm->tm_sec, ptm->tm_year+1900);
tag und monat müßen Platz für mind. 4 Zeichen haben,nicht nur 3.
Berufspenner
13-08-2003, 14:04
Original geschrieben von Giuly
0 1 2 3 = 4 Zeichen Eben nicht. Tag[3] ist 0 1 \0.
Cu
André
case 3: strcpy(tag, "Wed"); break;
tag[0] = "W";
tag[1] = "e";
tag[2] = "d";
tag[3] = "\0";
Berufspenner
13-08-2003, 14:18
Original geschrieben von Giuly
case 3: strcpy(tag, "Wed"); break;
tag[0] = "W";
tag[1] = "e";
tag[2] = "d";
tag[3] = "\0"; Hä? Was willst du damit jetzt sagen?
Cu
André
Ich finde sowas ja immer wieder erfrischend,gerade bei einem solchen Wetter :).
int tag[3];
Damit ist ein Array mit 3 Einträgen,das bedeutet die 3,und nicht das 3 der maximale Index ist.
Und da wir in C bei 0 anfangen zu zählen,sind gültige Indices 0,1,2.
ich verstehe dich nicht, aber wnn ich string_time ausgebe kommt da
Wed Aug 13 15:20:45 CEST 2003
raus. mehr wollte ich nicht.
ich verstehe dich zwar nicht, aber es geht trotzdem :rolleyes:. Wenn ich string_time ausgebe kommt da
Wed Aug 13 15:20:45 CEST 2003
raus. mehr wollte ich nicht.
Original geschrieben von Giuly
ich verstehe dich nicht, aber wnn ich string_time ausgebe kommt da
Wed Aug 13 15:20:45 CEST 2003
raus. mehr wollte ich nicht.
Die '\0' wird in Speicher reingeschrieben,der dir entweder nicht gehört (undefined behavior),oder in Speicher geschrieben,der dir gehört,aber von einer anderen Variablen besetzt ist (auch nicht viel besser).
Mach einfach
char tag[4];
char monat[4];
mehr wollte ich nicht sagen :).
ok, hab ich. Wenn jetzt ruhe ist... :o
nochmal was anderes:
Wie kann ich auf den ersten Buchstaben von ptm->tm_sec zugreifen? Bei Sekunden < 10 ist das erste Zeichen ein Leerzeichen, was ich gegen eine Null tauschen will.
anda_skoa
13-08-2003, 16:35
%02d als Formatstring benutzen.
Ciao,
_
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.