timezone id
-
Hallo,
unter Windows kann man bei den "Eigenschaften von Datum und Uhrzeit" auch die Zeitzone setzen, z.B. (GMT+01:00) Amsterdam, Berlin, Bern, etc.
In der MSDN bin ich bereits fündig geworden, dass es eine CdoTimeZoneId Map (enumerated values) gibt, in der all diese möglichen Zeitzonen aufgeführt sind.
Weiß jemand, ob und wie es nun möglich ist, aus einem Programm heraus, genau diese Einstellung abzufragen?
Vielen Dank schonmal,
Grüße
Markus
-
CdoTimeZoneId hat nichts mit Windows zu tun, sondern mit dem Exchange-Server...
Abfragen kannst Du die aktuelle Timezon mit
GetTimeZoneInformation
-
Ich mache das momentan so:
BSTR getDateBSTR() { // get the current date SYSTEMTIME sysTime; GetLocalTime(&sysTime); // get the time zone TIME_ZONE_INFORMATION TZInfo; GetTimeZoneInformation(&TZInfo); int offset = -TZInfo.Bias; int minutes = offset%60; int hours = (offset-minutes)/60; WCHAR timezone[10]; if (offset > 0) swprintf(timezone, L"GMT+%02d:%02d", hours, minutes); else if (offset < 0) swprintf(timezone, L"GMT%02d:%02d", hours, minutes); else swprintf(timezone, L"GMT"); // build the datestring WCHAR wchBuf[60]; swprintf(wchBuf, L"%hu-%02hu-%02huT%02hu:%02hu:%02hu %s", sysTime.wYear, sysTime.wMonth, sysTime.wDay, sysTime.wHour, sysTime.wMinute, sysTime.wSecond, timezone); return SysAllocString(wchBuf); }Die Ausgabe schaut z.B. so aus: "2006-06-16T19:15:00 GMT+01:00"
Wenn das jemand kürzer oder eleganter hinbekommt, für Verbesserungen bin ich immer dankbar.

Gruß, Thomas
-
Ich persönlich würde die Uhrzeit immer nach UTC umwandeln und dann diese Zeit zurückgeben. Es gibt auch Zeitzonen, die keine volle stunden sind (von was Du hier ausgehst)!
-
Hallo Jochen,
Tatsache: Kathmandu, Nepal hat GMT+5:45. Wer macht denn sowas?

Hatte mich schon gewundert, dass der Bias in Minuten angegeben ist.Danke für den Tipp, hab den Quelltext noch mal angepasst.
Thomas