2 Stimmen

Wie kann ich ein Datum vom Format "dd/mm/yyyy" in "yyyy/dd/mm" umwandeln?

Ich habe ein Textfeld, in dem der Benutzer ein Datum im Format eingeben soll dd/mm/yyyy wird dieses Datum gespeichert als yyyy/mm/dd in der Datenbank.

Ich möchte also, dass der Benutzer das Datum in dd/mm/yyyy Format und möchte es später in das yyyy/mm/dd damit ich die Datenbank abfragen kann.

Wie kann ich das vom Benutzer eingegebene Datum konvertieren? dd/mm/yyyy a yyyy/mm/dd ?

0 Stimmen

Welchen Datentyp hat Ihr Datum in der Datenbank? Ich hoffe, es ist ein Datum/Zeit-Feld.

1 Stimmen

In Ihrer Datenbank sollte es sich um eine DATETIME Datentyp, und als solcher hat er kein Format - es ist nur der Wert.

0 Stimmen

Der Datentyp des Datums in der Datenbank ist 'DATE'.

3voto

Bobby Punkte 11139

Schnell und vielleicht schmutzig:

string reformattedDate = DateTime.ParseExact(textBox1.Text, "dd/MM/yyyy", null).ToString("yyyy/MM/dd");

Dabei wird natürlich davon ausgegangen, dass der Inhalt des Textfeldes immer das angenommene Format hat, so dass vorher geprüft werden sollte, ob dies der Fall ist. Es gibt auch eine viel sicherere Methode, die keine zusätzlichen Überprüfungen erfordert:

DateTime result;
if(DateTime.TryParseExact(textBox1.Text, "dd/MM/yyyy", null, System.Globalization.DateTimeStyles.None, out result)
{
    // Here you can safely use result
    string reformattedDate = result.ToString("yyyy/MM/dd");
} else {
    // Screw the user
}

Dies wird versuchen, den Inhalt der Textbox zu analysieren und ihn über die out result und gibt im Erfolgsfall true zurück. Andernfalls können Sie sicher sein, dass die Eingabe entweder nicht das angenommene Format hatte oder kein gültiges Datum war.

Bitte beachten Sie auch, dass ParseExact wirft eine ArgumentNullException oder ein ArgumentException wenn die Konvertierung fehlschlägt.

Ich habe ein Textfeld, in das der Benutzer ein Datum im Format tt/mm/jjjj eingeben soll, das in der Datenbank als jjjj/mm/tt gespeichert ist.

Die offensichtliche Antwort darauf ist: Verwenden Sie einen DateTimePicker und eine parametrisierte Abfrage, bevor Sie sich mit einer String-Konvertierung herumschlagen. Das spart Ihnen viel Kopfschmerzen auf lange Sicht zu vermeiden.

0voto

Hans Kesting Punkte 35936

Wenn Sie ein Datum in der Datenbank speichern, dann speichern Sie es als Datum und nicht als String. Dann haben Sie nur ein Format: das, was der Benutzer eingegeben hat.

Mit DateTime.Parse (oder TryParse, oder den "Exact"-Versionen) können Sie die eingegebene Zeichenkette in einen DateTime-Wert umwandeln.

0voto

Adriaan Stander Punkte 155899

Ich würde einen Blick auf

DateTime.TryParseExact Methode

et

DateTime.ToString Methode So etwas wie dateTimeval.ToString("yyyy/MM/dd");

string dateString = "30/01/2010";
DateTime dateTimeVal;
if (DateTime.TryParseExact(dateString,"dd/MM/yyyy", null,DateTimeStyles.None,out dateTimeVal))
{
    string newFormat = dateTimeVal.ToString("yyyy/MM/dd");
}

0voto

cspolton Punkte 4435

Angenommen, Sie speichern das Datum in einer DateTime Feld in der Datenbank, wird das Datum nicht im Format dd/mm/yyyy .

Zum Rendern des Datums verwenden Sie:

string formattedDate = dateFromDb.ToString("yyyy/MM/dd");

Zum Konvertieren einer date Zeichenfolge für ein bestimmtes Format, das Sie verwenden können:

DateTime value;

if (DateTime.TryParseExact(
  date,
  "dd/MM/yyyy", 
  new CultureInfo("en-GB"),
  System.Globalization.DateTimeStyles.None,
  out value))
{
  Console.Write(value.ToString("yyyy/MM/dd"));
}
else
{
  Console.Write("Date parse failed!");
}

0voto

Guffa Punkte 663241

Dieses Datum wird als JJJJ/MM/TT in der Datenbank

Ich hoffe, dass dies nicht der Fall ist. Ich hoffe, Sie speichern das Datum als datetime Wert in der Datenbank und nicht als varchar Wert.

Wenn Sie das Datum als datetime Wertes macht es keinen Sinn, die Datumszeichenfolge von einem Format in ein anderes umzuwandeln, Sie sollten die Zeichenfolge in ein DateTime Wert.

Verwenden Sie die ParseExact Methode, um eine Zeichenkette aus einem bestimmten Format zu parsen:

DateTime date = DateTime.ParseExact(theDateTextbox.Text, "dd'/'MM'/'yyyy", CultureInfo.InvariantCulture);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X