Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
DateTime.Parse mit Zeitzone
11.08.2006
myCSharp.de - Member



Dabei seit:
Beiträge: 310

Themenstarter:

DateTime.Parse mit Zeitzone

beantworten | zitieren | melden

Ich habe den String "Tue, 04 Mar 2008 07:06:00 +0000", aus einem RSS-Feed extrahiert und lasse ihn per DateTime.Parse("Tue, 04 Mar 2008 07:06:00 +0000") als DateTime-Typ konvertieren.

Dort kommt aber als Ergebnis eine Stunde zu viel raus. Also 04.03.08 08:06:00.

Weshalb? Hätte am String-Ende der 0000-Wert einen anderen Eintrag gehabt, hätte ich das nachvollziehen können, aber so?
private Nachricht | Beiträge des Benutzers
sheitman
myCSharp.de - Member



Dabei seit:
Beiträge: 1.047

beantworten | zitieren | melden

Zitat
Dort kommt aber als Ergebnis eine Stunde zu viel raus. Also 04.03.08 08:06:00.
und welche zeitzone is das?
ich vermute einfach mal das tostring standardmäßig die lokalen einstellungen benutzt und dir das ding in gmt +1 anzeigt, weshalb du ne stunde zusätzlich bekommst
private Nachricht | Beiträge des Benutzers
11.08.2006
myCSharp.de - Member



Dabei seit:
Beiträge: 310

Themenstarter:

beantworten | zitieren | melden

Über die Zeitzone weis ich nichts, es kann zum Beispiel ein Japanischer Feed sein.

Ich vermute auch, dass .Net bei fehlenden Angaben von GMT+1 ausgeht.
private Nachricht | Beiträge des Benutzers
Bakachan
myCSharp.de - Member



Dabei seit:
Beiträge: 196
Herkunft: Falken, Treffurt

beantworten | zitieren | melden

sheitman hat recht
bei der "+0000" handelt es sich um eine Zeitzonenagabe

"Tue, 04 Mar 2008 07:06:00 +0000" währe Zeitzone +0
und da wir +1Stunde haben wird dir automatisch eine stunde draufgerechnet
(es wird automatisch in die Zeitzone des Computers umgerechnet)

"Tue, 04 Mar 2008 07:06:00 +0000" entspricht "Tue, 04 Mar 2008 08:06:00 +0001"(unsere Zeitzone)

Edit:
kleiner Fehler :
unsere zeitzone ist nicht +0001 sondern +1 oder +100 oder +0100
+0001 würde eine zeitverschiebung von 1 minute entsprechen
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Bakachan am .
your fragile folded wings
are just tired from the pure blue sky
you dont have to force your smiles for anyone
its okay to smile...for yourself
private Nachricht | Beiträge des Benutzers
11.08.2006
myCSharp.de - Member



Dabei seit:
Beiträge: 310

Themenstarter:

beantworten | zitieren | melden

OK - gibt es denn die Möglichkeit mir direkt die Zeitzone auszugeben? Also zum Beispiel: bei +0001 --> Berlin, Paris, etc.

Oder muss man das selbst implementieren?
private Nachricht | Beiträge des Benutzers
sheitman
myCSharp.de - Member



Dabei seit:
Beiträge: 1.047

beantworten | zitieren | melden

benutzt mal ToUniversalTime()

Console.WriteLine(d.ToUniversalTime().ToString("R"));
hats bei mir wieder richtig ausgegeben

hier auch mal nen blogeintrag der sich mit dem thema beschäftigt =)
http://blogs.technolog.nl/eprogrammer/archive/2006/05/14/476.aspx
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von sheitman am .
private Nachricht | Beiträge des Benutzers
11.08.2006
myCSharp.de - Member



Dabei seit:
Beiträge: 310

Themenstarter:

Zeitzone aus Zeitstring gewinnen

beantworten | zitieren | melden

Ich habe einen Zeitstring wie z.B. 'Tue, 04 Mar 2008 07:06:00 +0000' und möchte nun dafür die Zeitzone ausgegeben haben.

Mit DateTime.Parse(Tue, 04 Mar 2008 07:06:00 +0000) wird die Zeit auch erkannt und in Abhängigkeit meiner Rechnereinstellungen auch in dessen Zeit umgeformt. Daher denke ich, dass .Net eigentlich schon mit den Zeitzonen umgehen kann.

Wie suche nun eine Funktion wie

GetTimeZoneFromTimeString("Tue, 04 Mar 2008 07:06:00 +0000")

die mir dann --> London zurück gibt. Wie geht das in .Net (C#)? Oder muss man das selbst implementieren?
private Nachricht | Beiträge des Benutzers
Bakachan
myCSharp.de - Member



Dabei seit:
Beiträge: 196
Herkunft: Falken, Treffurt

beantworten | zitieren | melden

Du hast die Zeitzone doch in deinem String drinne
"Tue, 04 Mar 2008 07:06:00 +0000"
daraus kann man mögliche Standpunkte errechnen
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Bakachan am .
your fragile folded wings
are just tired from the pure blue sky
you dont have to force your smiles for anyone
its okay to smile...for yourself
private Nachricht | Beiträge des Benutzers
11.08.2006
myCSharp.de - Member



Dabei seit:
Beiträge: 310

Themenstarter:

beantworten | zitieren | melden

Ja genau, das ist mir bewusst. Und ich suche genau nach der Möglichkeit mir aus 0000 London, oder was auch immer ausgeben zu lassen.
private Nachricht | Beiträge des Benutzers
Bakachan
myCSharp.de - Member



Dabei seit:
Beiträge: 196
Herkunft: Falken, Treffurt

beantworten | zitieren | melden

Da ist mir keine Funktion bekannt.
Und einen genauen Ort wirst du eh nie angeben können da für jede Zeitverschiebung mehrere Orte in Frage kommen.
Die Zeitverschiebung ist zwar relativ genau angegeben (z.B. +1234 für 12 stunden und 34 minuten) gibt es immer mehrere mögliche Orte.

Was du selbst machen könntest wäre dir eine Klasse zu schreiben die dir je nach Zeitverschieben einen dieser möglichen Orte oder den Namen der zeitzone oder sonst was ausgibt.
your fragile folded wings
are just tired from the pure blue sky
you dont have to force your smiles for anyone
its okay to smile...for yourself
private Nachricht | Beiträge des Benutzers
sheitman
myCSharp.de - Member



Dabei seit:
Beiträge: 1.047

beantworten | zitieren | melden

Schau mal ob dir die Klassen TimeZone oder TimeZoneInfo weiterhelfen.
private Nachricht | Beiträge des Benutzers
11.08.2006
myCSharp.de - Member



Dabei seit:
Beiträge: 310

Themenstarter:

beantworten | zitieren | melden

Die habe ich schon durch und bin daher etwas verwundert, dass ich da nichts gefunden habe.

Aber ist ja auch kein Problem eine Methode mit 24 switch-statements zu schreiben. Die repräsentierenden Städte stehen schön in der Windows-Zeitanzeige.
private Nachricht | Beiträge des Benutzers
frank#
myCSharp.de - Member



Dabei seit:
Beiträge: 21
Herkunft: Karlsruhe

beantworten | zitieren | melden

TimeZoneInfo hat eine statische Methode GetSystemTimeZones(), die dir eine Collection von TimeZoneInfo-Objekten liefert. Über den BaseUtcOffset bekommst du den Offset zur UTC, musst dir halt eine passende raussuchen. In DisplayName stehen dann die Städte, in StandardName sowas wie " Malaysische Halbinsel Normalzeit".

Gruß, frank#
private Nachricht | Beiträge des Benutzers