Datumskonvertierung



  • Hallo,

    ein Thema, das ich nie wirklich verstanden habe - hoffe, hier kann mir jemand weiter helfen!

    In meiner MySQL-DB hab ich folgendes Datumformat: yyyy-MM-dd

    Wenn ich nun darauf zugreife

    li0.Text = dt.Rows[i]["termin"].ToString();
    

    erhalte ich dieses Format: "dd-MM-yyyy hh🇲🇲ss"

    Nun hätte ich es aber gerne, dass es nur als "dd-MM-yyyy" ausgegeben wird.
    Kann mir da jemand helfen, wie ich den String so formatiere?

    Vielen Dank für Eure Hilfe und entschuldigt bitte diese Anfängerfrage!
    Bergziege



  • vllt suchst du ToShortDateString()???





  • Ich habs nun so versucht:

    string strZeit = dt.Rows[i]["termin"].ToString();
                        DateTimeFormatInfo dtInfo = new CultureInfo("de-DE").DateTimeFormat;
                        DateTime dtNeu = DateTime.ParseExact(strZeit, "dd.MM.yyyy", dtInfo);
    

    Erhalte aber jedes mal die folgende Fehlermeldung:

    Die Zeichenfolge wurde nicht als gültiges DateTime erkannt.

    Nach dem Auslesen aus der DB steht in meinem string (strZeit) folgendes: "30.11.2009 00:00:00"

    Wo liegt da der Fehler?



  • 00:00:00 kommt in dd.MM.yyyy offenbar nicht vor...
    Hast du meinen Link gelesen?



  • du musst beim parse exact angeben in was der string _kommt_ nicht in das was er raus kommen soll



  • Ja, den Link hab ich gelesen - aber wohl nicht verstanden! 😞

    Ich möchte ja auch, dass 00:00:00 NICHT angezeigt wird, also so "dd.MM.yyyy"

    Ich glaub ich steh echt total auf dem Schlauch - tut mir leid! 😕



  • erst nach DateTime mit parse exact - und da kannst du dann ToString mit deinem neuen format machen



  • Bergziege schrieb:

    Ja, den Link hab ich gelesen - aber wohl nicht verstanden! 😞

    Ich möchte ja auch, dass 00:00:00 NICHT angezeigt wird, also so "dd.MM.yyyy"

    Ja, scheint so:

    li0.Text = dt.Rows[i]["termin"].ToString("dd.MM.yyyy");
    


  • Danke!

    Das

    li0.Text = dt.Rows[i]["termin"].ToString("dd.MM.yyyy");
    

    hab ich schon probiert.
    Fehlermeldung:

    Keine Überladung für die ToString-Methode nimmt 1 Argumente an.

    Langsam wirds mir wirklich peinlich! 😞



  • Oh, nee, mein Fehler...ich dachte das Teil wäre schon ein DateTime-Objekt.
    Dann mach das doch mit dem ParseExact nur halt mit "dd.MM.yyyy HH🇲🇲ss" als zweiten Parameter.



  • och kinder
    wie kann man nur so lange an so kleinkram rum fummeln - also echt
    hier mal zwei varianten (frei aus dem kopf hier im forum

    string text = DateTime.ParseExact(dt.Rows[i]["termin"], "dd.MM.yyyy HH🇲🇲ss", new CultureInfo("1031")).ToString("dd.MM.yyyy");
    string text = string.Format("{0:dd.MM.yyyy}", DateTime.ParseExact(dt.Rows[i]["termin"], "dd.MM.yyyy HH🇲🇲ss", new CultureInfo("1031")));

    zudem muesste es auch eine kurze bereits fertige convention geben fuer time formats

    string text = DateTime.ParseExact(dt.Rows[i]["termin"], "dd.MM.yyyy HH🇲🇲ss", new CultureInfo("de-DE")).ToString("d", new CultureInfo("1031"));
    string text = string.Format(new CultureInfo("1031"), "{0:d}", DateTime.ParseExact(dt.Rows[i]["termin"], "dd.MM.yyyy HH🇲🇲ss", new CultureInfo("1031")));

    erster schritt ist den text in ein datetime zu bekommen
    der ist immer gleich:
    DateTime givenDateTime = DateTime.ParseExact(dt.Rows[i]["termin"], "dd.MM.yyyy HH🇲🇲ss", new CultureInfo("1031"));

    besser ist das man es erst versucht zu parsen - evtl ist der format anders
    DateTime givenDateTime = DateTime.Now;
    if (DateTime.TryParseExact(dt.Rows[i]["termin"], "dd.MM.yyyy HH🇲🇲ss", new CultureInfo("1031"), out givenDateTime))

    wenn man das hat kann man es beliebig ausgeben lassen
    string text = givenDateTime.ToString("dd.MM.yyyy");
    string text = givenDateTime.ToString("d", CultureInfo.CurrentCulture);
    string text = string.Format("dd.MM.yyy", givenDateTime);
    string text = string.Format(CultureInfo.CurrentCulture, "{0:d}", givenDateTime);

    ich empfehle die kurz schreibweise d und die eingestellte culture um auf lokalisierungen eingehen zu koennen

    alle moeglichen bereits fertigen varianten der datetime formatter gibts in der msdn
    http://msdn.microsoft.com/en-us/library/az4se3k1(VS.71).aspx
    http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx



  • Och Vati,

    schön, dass du mich nochmal wiederholst und das richtige Format nochmals angibst und auch noch einen weiteren Link mit fertigen Datums-Varianten angibst 😉



  • Aber blöd das Vati die Code Tags noch immer nicht gefunden hat, liegen wohl bei Mama auf den Nachtschrank. :p



  • Ja nun is ja wieder genug! Seit doch einfach froh das ihr Informationen von anderen bekommt ohne dafür irgend eine Gegenleistung zu bringen. Meine Güte na und dann hat er eben was 2mal erklärt dafür ausführlich.Leute steigert euch in solche sachen doch nicht so rein.


Anmelden zum Antworten