Datum GMT vergleichen
-
Morgen,
wie bekommt man am schnellsten und effektivsten ein Datum, welches im GMT Format vorliegt in ein struct Array reinkopiert, um es mit einem anderen GMT Datum vergleichen zu können?
Beispiel für ein solches Datum: Sat, 29 Oct 1994 19:43:31 GMT - Dabei möchte ich gern vergleichen, ob ein Datum vor dem anderen liegt etc. (also nicht nur auf gleichheit überprüfen).
char date[] = "Sat, 29 Oct 1994 19:43:31 GMT"; typedef struct { char Sec; char Min; char Hour; char Day; char Date; char Month; char Year; } DATE;
Wie bekomm ich am schnellsten die Werte von dem char date[] in die struct? gibt es hierzu string funktionen, mit denen ich sagen kann, chars einlesen bis zum ersten Komma oder bis zum nächsten leerzeichen?
Torben
-
noch ein kleine Nachfrage: Was passiert, wenn z.B. kein Komma vorhanden ist?? Oder das Datum das falsche Format aufweist? Wie reagieren dann diese string-Funktionen - nicht das sich dann das Programm aufhängt...
Torben
-
Moin !
Du musst schon mehr als ein Zeichen pro Strukturmember spendieren, sonst passen die Teile nicht rein.
So in etwa:typedef struct { char Sec [3]; char Min [3]; char Hour [3]; char Day [10]; char Month [10]; char Year [7]; } StrDate;
Für die Aufteilung hast du mehrere Möglichkeiten. Es geht mit und ohne Hilfsfunktionen wie strtok, strchr, strstr.
-
Die eine oder andere 'Hilfsfunktion' würd ich schon benutzen und auch eigene hinzufügen:
char* Months[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; char* Days[] = { "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun" }; bool IsStrMonth ( const char* s ) { int i; for ( i=0; i<12; i++ ) if ( strcmp ( s, Months [i] ) == 0 ) return true; return false; } bool IsStrDay ( const char* s ) { int i; for ( i=0; i<7; i++ ) if ( strcmp ( s, Days [i] ) == 0 ) return true; return false; }
-
CoNv3rt3R schrieb:
Moin !
Du musst schon mehr als ein Zeichen pro Strukturmember spendieren, sonst passen die Teile nicht rein.
So in etwa:typedef struct { char Sec [3]; char Min [3]; char Hour [3]; char Day [10]; char Month [10]; char Year [7]; } StrDate;
Das alte Format RFC 850 sollte auch gelesen werden können. Hier wären die Strukturelemente auch noch zu klein.
MfG,
D.G.
-
ISO 8601