Jump to content
  • 0
Melde dich an, um diesem Inhalt zu folgen  
Gast NapNap

C# DateTime.TryParseExact Formatierungsfrage

Frage

Gast NapNap
DateTime.TryParseExact(txtGeburtstag.Text,"mm/dd/yyyy",CultureInfo.CurrentCulture, DateTimeStyles.None, out geburtsdatum);

Eingabe= 28.05.1991

liefert als Ergebnis {28.01.1991 00:05:00}

-> Warum befindet sich die Time, beim Format dd/mm/yyyy mit im Ergebnis und wie kann ich meinen String in Format Tag.Monat.Jahr parsen.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

14 Antworten auf diese Frage

Empfohlene Beiträge

  • 0
Ich kann es leider nicht testen, aber hast du mal probiert das DateTime Modul folgende Konstante hinzuzufügen?

DateTime.dateTryParseExact(txtGeburtstag.Text,"mm/dd/yyyy",CultureInfo.CurrentCulture, DateTimeStyles.None, out geburtsdatum);

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
  • 0
Gast NapNap
vor 3 Minuten schrieb medmexx1:

Ich kann es leider nicht testen, aber hast du mal probiert das DateTime Modul folgende Konstante hinzuzufügen?

DateTime.dateTryParseExact(txtGeburtstag.Text,"mm/dd/yyyy",CultureInfo.CurrentCulture, DateTimeStyles.None, out geburtsdatum);
.dateTryParseExact gibt es nicht

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
  • 0

Nein, tut es nicht

DateTime.TryParseExact("31/12/2020", "dd/MM/yyyy", CultureInfo.CurrentCulture, DateTimeStyles.None, out DateTime geburtsdatum);
Console.WriteLine(geburtsdatum);

Ausgabe:

31.12.2020 00:00:00
bearbeitet von Whiz-zarD

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
  • 0
Gast NapNap
vor 21 Minuten schrieb Whiz-zarD:

Nein, tut es nicht


DateTime.TryParseExact("31/12/2020", "dd/MM/yyyy", CultureInfo.CurrentCulture, DateTimeStyles.None, out DateTime geburtsdatum);
Console.WriteLine(geburtsdatum);

Ausgabe:


31.12.2020 00:00:00

ich wollte in meiner DateTime variablen nur "31.12.2020" stehen haben, statt {"31.12.2020 00:00:00"}

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
  • 0
Gast NapNap
vor 45 Minuten schrieb Whiz-zarD:

Kannst du englisch? Was meinst du, wieso die Klasse DateTime heißt?

Und wenn du nur das Datum haben willst, dann formatiere die Ausgabe. Auch hier gilt: mm für Minuten und MM für Monat.

habe geburtsdatum.toString("dd/MM/yyyy") probiert. Hat nicht funktioniert.

Wie formatiere ich die Ausgabe, um meinen gewünschten Wert zu erhalten?

 

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
  • 0

Du solltest dich vielleicht noch einmal mit den Grundlagen auseinandersetzen.

.toString() sorgt nicht dafür, dass plötzlich Zeichen verschwinden.

Zwei Vorschläge.

1)

string formattedDate = geburtsdatum.ToString().Substring(0, 10);

Console.WriteLine(formattedDate);
// Output: 12/31/2020

2)

int day = geburtsdatum.Day,
    month = geburtsdatum.Month,
    year = geburtsdatum.Year;

string dateFormat = "{1}/{0}/{2}",
       formattedDate = string.Format(dateFormat, day, month, year);

Console.WriteLine(formattedDate);
// Output: 12/31/2020

Davon abgesehen würde ich für CultureInfo.CurrentCulture besser irgendetwas festlegen, statt mit CurrentCulture zu arbeiten.

Falls noch Fragen offen sind: https://docs.microsoft.com/de-de/dotnet/csharp/ ;-)

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
  • 0

 Warum umständlich, wenn es einfach geht

DateTime dt = DateTime.Now();
string formatedDt = $"{dt:dd.MM.yyyy}";

 

vor 9 Stunden schrieb Gast NapNap:

ich wollte in meiner DateTime variablen nur "31.12.2020" stehen haben, statt {"31.12.2020 00:00:00"}

Was du missverstehst ist ,dass DateTime.TryParseExtract dir aus einem String ein DateTime bastelt. Ein DateTime hat auch immer eine Zeitangabe. Wenn du etwas ausgeben willst bzw. irgendwo ein Datum formatiert anzeigen willst, dann nimmst du aber String Werte her.

bearbeitet von KeeperOfCoffee

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
  • 0
Gast NapNap
vor 9 Stunden schrieb KeeperOfCoffee:

 Warum umständlich, wenn es einfach geht


DateTime dt = DateTime.Now();
string formatedDt = $"{dt:dd.MM.yyyy}";

 

Was du missverstehst ist ,dass DateTime.TryParseExtract dir aus einem String ein DateTime bastelt. Ein DateTime hat auch immer eine Zeitangabe. Wenn du etwas ausgeben willst bzw. irgendwo ein Datum formatiert anzeigen willst, dann nimmst du aber String Werte her.

finde die Formatierung gut -> string formatedDt = $"{geburtsdatum:dd.MM.yyyy}";

kannst du mir erklären wie die funktioniert?

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
  • 0

Es handelt sich hierbei um eine Zeichenfolgeninterpolation (https://docs.microsoft.com/de-de/dotnet/csharp/language-reference/tokens/interpolated)

Alles ab dem ":" ist eine Formatzeichenfolge (siehe hier: https://docs.microsoft.com/de-de/dotnet/standard/base-types/composite-formatting#format-string-component). 

Da es sich um ein DateTime handelt, werden die Standard Formatzeichenfolgen für diesen Typ verwendet bzw. in diesem Fall ist es eine benutzerdefinierte Formatzeichenfolge:

https://docs.microsoft.com/de-de/dotnet/standard/base-types/custom-date-and-time-format-strings

"dd": https://docs.microsoft.com/de-de/dotnet/standard/base-types/custom-date-and-time-format-strings#ddSpecifier

"MM": https://docs.microsoft.com/de-de/dotnet/standard/base-types/custom-date-and-time-format-strings#MM_Specifier

"yyyy": https://docs.microsoft.com/de-de/dotnet/standard/base-types/custom-date-and-time-format-strings#yyyySpecifier

TL;DR:  dd = Tag zwischen 01-31, MM = Monat von 01-12, yyyy = Jahr

 

ACHTUNG: Die von mir vorgeschlagene Schreibweise ist erst ab C# 6.0 verfügbar und wird in sehr alten Legacy Anwendungen nicht funktionieren.

 

 

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
  • 0
Gast NapNap
vor 14 Stunden schrieb KeeperOfCoffee:

 Warum umständlich, wenn es einfach geht


DateTime dt = DateTime.Now();
string formatedDt = $"{dt:dd.MM.yyyy}";

 

Was du missverstehst ist ,dass DateTime.TryParseExtract dir aus einem String ein DateTime bastelt. Ein DateTime hat auch immer eine Zeitangabe. Wenn du etwas ausgeben willst bzw. irgendwo ein Datum formatiert anzeigen willst, dann nimmst du aber String Werte her.

Danke für eure Tipps, und vorallem @KeeperOfCoffee für die ausführliche Erklärung.

Hab mich für 

var datum = Convert.ToDateTime(txtGeburtstag.Text).ToShortDateString(); 

entschieden

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Gast
Diese Frage beantworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Melde dich an, um diesem Inhalt zu folgen  

Fachinformatiker.de, 2020 SE Internet Services

fidelogo_small.png

if_icon-6-mail-envelope-closed_314900.pnSchicken Sie uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App


Get it on Google Play

Kontakt

Hier werben?
Oder senden Sie eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...

Wichtige Information

Fachinformatiker.de verwendet Cookies. Mehr dazu in unserer Datenschutzerklärung