[c] dwHighDateTime in Echtes Datum Wandeln

jokey2 hat gesagt.:
Kannst Du doch ganz einfach rausfinden: Setzt Deine SYSTEMTIME auf 0 und schau, was Dir GetDateFormat und GetTimeFormat ausgeben. ;-)

Hmm ja könnte ich naturlich machen, aber das ist mir zu umständlich :(

Ich habe jetzt wieder ein Problem. Ich Brauche für die Google-Sitemap das Datum-Format genau in JJJJ/MM/TT also z.B. 2006/01/28 da kann ich mich auf keine Windows-Einstellung verlassen glaub ich, deshalb muss das Format genau angegeben werden.

Ich habe jetzt Folgenden Code:
Code:
TimeFehler = GetDateFormat(LOCALE_USER_DEFAULT,
LOCALE_NOUSEROVERRIDE,
&lpSystemTime,
TEXT("yyyy/MM/DD"),
szXMLFileDate,
sizeof(szXMLFileDate));

if((TimeFehler == ERROR_INVALID_PARAMETER) || (TimeFehler == ERROR_INVALID_PARAMETER) || (TimeFehler == ERROR_INVALID_FLAGS))
				{printf("DatumFehler!!\n");}

Aber es wird wieder nur Müll im String eingesetzt oder garnix also ein NULL-String, Fehler werden aber keine gemeldet.

Wo liegt nun schon wieder der Fehler?
 
Hi.

Wie ist denn szXMLFileDate definiert?

Die Funktion GetDateFormat liefert 0 zurück wenn ein Fehler auftritt. Du mußt GetLastError aufrufen um nähere Informationen darüber zu bekommen. GetLastError liefert dann einen der Fehlercodes:
* ERROR_INSUFFICIENT_BUFFER
* ERROR_INVALID_FLAGS
* ERROR_INVALID_PARAMETER

Gruß
 
deepthroat hat gesagt.:
Hi.

Wie ist denn szXMLFileDate definiert?

Die Funktion GetDateFormat liefert 0 zurück wenn ein Fehler auftritt. Du mußt GetLastError aufrufen um nähere Informationen darüber zu bekommen. GetLastError liefert dann einen der Fehlercodes:
* ERROR_INSUFFICIENT_BUFFER
* ERROR_INVALID_FLAGS
* ERROR_INVALID_PARAMETER

Gruß

ERROR_INVALID_FLAGS wird zurückgegeben. szXMLFileDate ist als TCHAR definiert mit ner länge von 101.
 
Ah, habs raus gefunden :)

So ungefähr muss es Aussehen:
Code:
TimeFehler = GetDateFormat(LOCALE_NEUTRAL,
				DATE_USE_ALT_CALENDAR,
				&lpSystemTime,
				TEXT("yyyy/MM/DD"),
				szXMLFileDate,
				sizeof(szXMLFileDate));
 
Cusco hat gesagt.:
jokey2 hat gesagt.:
Kannst Du doch ganz einfach rausfinden: Setzt Deine SYSTEMTIME auf 0 und schau, was Dir GetDateFormat und GetTimeFormat ausgeben.
Hmm ja könnte ich naturlich machen, aber das ist mir zu umständlich :(
Wieso zu umständlich? :confused:
Code:
FILETIME ft;
SYSTEMTIME st;

ft.dwLowDateTime = ft.dwHighDateTime = 0;
FileTimeToSystemTime(&ft, &st);
GetDateFormat(LOCALE_USER_DEFAULT, 0, &st, "yyyy/MM/dd", buf, sizeof(buf));
puts (buf);

Das sollte dann 1601/01/01 ergeben. (also genau die Minimalwerte so wie sie auch für die Systemtime im MSDN definiert sind.)

Cusco hat gesagt.:
So ungefähr muss es Aussehen:
Code:
TimeFehler = GetDateFormat(LOCALE_NEUTRAL, DATE_USE_ALT_CALENDAR, &lpSystemTime, TEXT("yyyy/MM/DD"), szXMLFileDate, sizeof(szXMLFileDate));
Hast du eigentlich schonmal die Doku im MSDN gelesen?

1) der 2te Parameter muß 0 sein, wenn der Formatstring nicht NULL ist.

2) es gibt kein DD Formatelement, nur d dd ddd dddd (kleine Buchstaben).

Gruß
 
deepthroat hat gesagt.:
Wieso zu umständlich? :confused:
Code:
FILETIME ft;
SYSTEMTIME st;

ft.dwLowDateTime = ft.dwHighDateTime = 0;
FileTimeToSystemTime(&ft, &st);
GetDateFormat(LOCALE_USER_DEFAULT, 0, &st, "yyyy/MM/dd", buf, sizeof(buf));
puts (buf);

Das sollte dann 1601/01/01 ergeben. (also genau die Minimalwerte so wie sie auch für die Systemtime im MSDN definiert sind.)


Hast du eigentlich schonmal die Doku im MSDN gelesen?

1) der 2te Parameter muß 0 sein, wenn der Formatstring nicht NULL ist.

2) es gibt kein DD Formatelement, nur d dd ddd dddd (kleine Buchstaben).

Gruß

In der Doku steht aber ein DD und kein dd, aber DD funktioniert nicht immer wie ich rausfand also habe ich dd probiert, zum Schluss

Nur zu Info: Ich kann kein Englisch, auch keine anderen Fremdsprachen, in der Schule hat man mich davon Ausgeschlossen, weil ich Stotterer war, was sich erst legte als ich mit 20, also nach der Schule, mit dem Rauchen anfing, dann änderte sich meine Atmung wodurch sich das Stottern legte. Und auf die Idee mit Google-Sprachtools zu übersetzen kam ich erst gestern abend, das ist aber kein arbeiten. Für den Amiga zu Programmieren habe ich auch ohne Englisch hinbekommen und das sogar noch ohne Internetunterstützung, ich denke das ich das bei Windows auch irgendwie schaffen werde, ich lege mir einfach entsprechne Notizen an, meist in Form von kleinen Beispielen.

Seit heute Morgen um ca 7Uhr schlage ich mich mit der Englischen Doku rum um ne Routine zu schreiben die Check, ob das System in Deutsch ist oder ner anderen Sprache, weit bin ich dabei nicht gekommen. Zumal Google den Fehler hat die url falsch zu übernehmen so das keine Links funktionieren :mad:

Achso das Windows ab 1601 bis 32xxx Jahre zählt habe ich fast per Zufall gestern noch in der Doku gelesen
 
Zuletzt bearbeitet:
Zurück