Benutzer mit den meisten Antworten
Datum - TimeZone

Frage
-
Hallo,
kann mir bitte jemand sagen, wie ich diesen Code nach C# adapieren kann,
damit das mit den Zeiten auch klappt.
Ist ja mit den Zeiten teils nicht so einfach.
Danke im Voraus.
Viele Grüße SandraCString ProductType::GetTimeZoneDifference() { TIME_ZONE_INFORMATION TimeZoneInfo; GetTimeZoneInformation(&TimeZoneInfo); CString strTimeZoneDifference; strTimeZoneDifference.Format("%+03d:00", -1 * TimeZoneInfo.Bias / 60); // -1* da Bias addiert return strTimeZoneDifference; }
Antworten
-
Hallo Sandra,
wenn ich es richtig erfasst habe, müsste es für deine Zwecke so aussehen:
DateTime currentDate = DateTime.Now; TimeZone localZone = TimeZone.CurrentTimeZone; TimeSpan currentOffset = localZone.GetUtcOffset( currentDate ); // Vor .net 4 -> enthält noch Sekunden string strUTCOffset = (currentOffset.Ticks < 0?"-":"") + currentOffset.ToString(); // Ab .net 4 strUTCOffset = (currentOffset.Ticks < 0?"-":"") + currentOffset.ToString("hh\\:mm");
Falls es kein .net 4 ist, müsstest Du also ggfls. noch die Sekunden wegparsen.
- Gruß Florian
- Als Antwort markiert Sandra Bauer Freitag, 28. April 2017 16:24
-
Hallo Sandra,
das ist aber mühsames Gefummel für eine Zeichenfolge..., Schon mal DateTimeOffset angeguckt... Nur so als Appetithappen:
DateTime timeNow = DateTime.Now; DateTimeOffset offsetNow = new DateTimeOffset(timeNow); Console.WriteLine("{0} => {1}", offsetNow, offsetNow.Offset);
in Offset steht das drin, was Du aufwändig verkomplizierst.
P.S.: Produktionszeiten speichert (liefert) man in UTC, da entfällt solches [fehlerhaftes] Gerechne... Denn wer sagt, das die Zeit der produzierenden Fabrik in der gleichen Zeitzone wie der des berechnenden Computers liegt?!?
- Als Antwort markiert Sandra Bauer Samstag, 29. April 2017 10:29
Alle Antworten
-
Hallo Sandra,
.NET stellt zu Zeitzonen einen kompletten Satz über die TimeZoneInfo - Klasse bereit.
Siehe dazu auch: Konvertieren von Uhrzeiten zwischen Zeitzonen.
Wobei ich mich frage, was in einem ProductType die Berechnung von Uhrzeiten verloren hat ;)
Gruß Elmar
-
CString ProductType::GetTimeZoneDifference() { TIME_ZONE_INFORMATION TimeZoneInfo; GetTimeZoneInformation(&TimeZoneInfo); CString strTimeZoneDifference; strTimeZoneDifference.Format("%+03d:00", -1 * TimeZoneInfo.Bias / 60); // -1* da Bias addiert return strTimeZoneDifference; }
- Gruß Florian
- Bearbeitet Florian Haupt Freitag, 28. April 2017 08:17 Grammatik
-
Hallo Sandra,
wenn ich es richtig erfasst habe, müsste es für deine Zwecke so aussehen:
DateTime currentDate = DateTime.Now; TimeZone localZone = TimeZone.CurrentTimeZone; TimeSpan currentOffset = localZone.GetUtcOffset( currentDate ); // Vor .net 4 -> enthält noch Sekunden string strUTCOffset = (currentOffset.Ticks < 0?"-":"") + currentOffset.ToString(); // Ab .net 4 strUTCOffset = (currentOffset.Ticks < 0?"-":"") + currentOffset.ToString("hh\\:mm");
Falls es kein .net 4 ist, müsstest Du also ggfls. noch die Sekunden wegparsen.
- Gruß Florian
- Als Antwort markiert Sandra Bauer Freitag, 28. April 2017 16:24
-
Hallo,
Danke an Alle.
Klappte.
Ich hab's so gelöst. + Zeichen war noch wichtig. Sieht gut aus, dachte evtl. gibt es halt ein direkter Aufruf, etc. ?@Elmar, das Produkterzeugungsdatum will man wissen.
Viele Grüße Sandraprivate string GetTimeZoneDifference(DateTime currentDate) { TimeZone localZone = TimeZone.CurrentTimeZone; TimeSpan currentOffset = localZone.GetUtcOffset(currentDate); string dateUTCOffset = (currentOffset.Ticks < 0 ? "-" : "+") + currentOffset.ToString("hh\\:mm"); return dateUTCOffset; } DateTime time = DateTime.Now; // direkter Aufruf? var temp = DateTime.UtcNow.ToString("yyyy-MM-ddTHH\\:mm\\:ssZ"); string timeBoard = time.ToString("yyyy-MM-ddTHH:mm:ss") + GetTimeZoneDifference(time);
-
Hallo Sandra,
das ist aber mühsames Gefummel für eine Zeichenfolge..., Schon mal DateTimeOffset angeguckt... Nur so als Appetithappen:
DateTime timeNow = DateTime.Now; DateTimeOffset offsetNow = new DateTimeOffset(timeNow); Console.WriteLine("{0} => {1}", offsetNow, offsetNow.Offset);
in Offset steht das drin, was Du aufwändig verkomplizierst.
P.S.: Produktionszeiten speichert (liefert) man in UTC, da entfällt solches [fehlerhaftes] Gerechne... Denn wer sagt, das die Zeit der produzierenden Fabrik in der gleichen Zeitzone wie der des berechnenden Computers liegt?!?
- Als Antwort markiert Sandra Bauer Samstag, 29. April 2017 10:29
-
P.S.: Produktionszeiten speichert (liefert) man in UTC, da entfällt solches [fehlerhaftes] Gerechne... Denn wer sagt, das die Zeit der produzierenden Fabrik in der gleichen Zeitzone wie der des berechnenden Computers liegt?!?
Hallo Elmar,
ja Danke. Da halte ich mich kurz, der Kunde will das so. Der PC, der Server liegt sicher meist dort. Ausschließen kann man es heute nicht, keine Frage.
Grüße Sandra