Laden...

[erledigt] String in DateTime umwandeln mit bestimmtem Format

Erstellt von schwmar vor 5 Jahren Letzter Beitrag vor 5 Jahren 1.419 Views
S
schwmar Themenstarter:in
5 Beiträge seit 2018
vor 5 Jahren
[erledigt] String in DateTime umwandeln mit bestimmtem Format

Hallo,

ich hätte eine Frage:
Ist es möglich, ein DateTime-Objekt im Format "2018-06-01T08:00:00" zu übergeben?

Ich bekomme nämlich einen String genau in diesem Format übergeben.

Und jetzt soll ich diesen String als DateTime-Objekt genau in diesem Format auch wieder zurückgeben.

Ich habe jetzt schon alle Methoden mit diversen Parametern getestet:
Parse, ParseExact, TryParse und TryParseExact. Aber ich bekomme das Datum immer nur so zurück "2018-06-01 08:00:00 AM".

Vielen Dank im Voraus!

VG
schwmar

1.040 Beiträge seit 2007
vor 5 Jahren

Ja, das geht.
In dem Fall ist es das Format "s" für ein sortierbares Datums-/Zeitmuster.

Standard Date and Time Format Strings

string test = new DateTime(2018, 04, 05, 13, 32, 28).ToString("s");
//2018-04-05T13:32:28
S
schwmar Themenstarter:in
5 Beiträge seit 2018
vor 5 Jahren

Ja, genau. Danke. Das hab ich so auch schon hinbekommen.
Aber jetzt ist es ja ein String. Ich brauch ein DateTime-Objekt.

Ich hab das so probiert. Bekomme aber dann eben immer das "falsche" Format (2018-06-01 08:00:00 AM):


string Datum = "2018-06-01T08:00:00";
DateTime DatumNeu = DateTime.ParseExact(Datum, "s", CultureInfo.InvariantCulture, DateTimeStyles.None);

Wie bekomme ich ein DateTime-Objekt in diesem Ausgangsformat?

1.040 Beiträge seit 2007
vor 5 Jahren

Ein DateTime kann kein falsches Format haben. 🤔
Entweder der Wert der DateTime-Struktur stimmt oder er stimmt nicht.

Wo hast du denn das falsche Format her?
Wenn das aus der Debugger-Anzeige stammt, hat alles wunderbar geklappt.

S
schwmar Themenstarter:in
5 Beiträge seit 2018
vor 5 Jahren

Genau, im Debugger steht "2018-06-01 08:00:00 AM".

Ich bin jetzt nur verwirrt, weil ich eben ein DateTime-Objekt (und kein String-Objekt) im Format "yyyy-MM-ddTHH:mm:ss" übergeben soll.

Es wird aber immer als "2018-06-01 08:00:00 AM" übergeben, richtig?

D.h. entweder habe ich ein DateTime-Objekt mit "2018-06-01 08:00:00 AM"
ODER ein String-Objekt "2018-06-01T08:00:00"??

1.040 Beiträge seit 2007
vor 5 Jahren

Nein, das siehst du falsch.

Eine DateTime-Struktur hat kein Format.
Eine DateTime-Struktur hat nur einen bestimmten Wert.
Wenn du ToString() aufrufst, kannst du einfach verschiedene Formate angeben, im Falle des Debuggers ist es anscheinend das Format "G".

Schaue dir das mal zum Verständnis an:

string test = DatumNeu.ToString("s");
string test2 = DatumNeu.ToString("G");

Es ist der gleiche Wert - nur unterschiedlich formatiert.

S
schwmar Themenstarter:in
5 Beiträge seit 2018
vor 5 Jahren

Ok. Vielen Dank! Verstanden.

D.h. wenn ich ein bestimmtes Format übergeben möchte, dann geht das nur als String.

1.040 Beiträge seit 2007
vor 5 Jahren

Kommt drauf an, wohin du es übergeben möchtest bzw. was der Empänger damit machen will (vorausgesetzt, das ist bekannt).

Wenn der Empfänger wieder ein DateTime daraus machen will, kannst du einfach das DateTime übergeben. 😁

T
708 Beiträge seit 2008
vor 5 Jahren

Vereinfacht ausgedrückt ist ein DateTime nichts anderes als ein Int64. Also eine einfache Ganzzahl.
Es beginnt bei 0, was dem 1.1.0001 00:00:00.0000 entspricht.

Ein Datum wir dann simpel in "Ticks" gespeichert. Eine Einheit, genauer als Millisekunden -Sollte aber prinzipiell keine Rolle spielen- Die laufend hochgezählt wird.

Erst wenn z.B. ToString aufgerufen wird, erweckst Du diese Zahl, abhängig der Zeitzone oder des Übergabeparameters zum Leben.

Übergibst Du die DateTime-Variable einem anderen Programm, muss Du Dich um nichts kümmern. Es wird der Integerwert übergeben. Exportierst Du sie in eine Datei, wird sie mit ToString (Oder ToShortDateTime, ect.) formatiert.

5.657 Beiträge seit 2006
vor 5 Jahren

Das kann man aber auch alles in der Doku nachlesen. Geht schneller und ist ausführlicher. Siehe [Hinweis] Bitte schau in die SDK-/MSDN-Doku und [Tipp] Schau in die Doku! - Möglichkeiten der Informationsgewinnung

Weeks of programming can save you hours of planning

S
schwmar Themenstarter:in
5 Beiträge seit 2018
vor 5 Jahren

Vielen Dank an alle! Jetzt verstehe ich es.

Die MSDN-Doku hab ich zwar vorher schon gelesen, aber erst jetzt hab ich's richtig verstanden.

Danke!