Wie konvertiere ich DateTime in ein bestimmtes Zeichenfolgenformat (in beide Richtungen, z. B. wenn das angegebene Format "yyyyMMdd" ist)?


132

Ich habe ein Problem beim Konvertieren einer Datums- / Uhrzeitangabe im Zeichenfolgenformat, kann sie jedoch nicht im Format konvertieren "yyyyMMdd".

Mein Code lautet:

string tpoc = refSubClaim.BenefitsFolder.BenefitFolderIdNumber.ToString();
string[] tpocinfo = Regex.Split(tpoc,";");

for (int i = 0; i < tpocinfo.Length; i++)
{
    switch (i)
    {
        case 0:
        {
            string[] tpoc2 = Regex.Split(tpocinfo[0], ",");
            claimantAuxillaryRecord.TPOCDate2 = tpoc2[0].ToString();
            claimantAuxillaryRecord.TPOCAmount2 = Convert.ToDecimal(tpoc2[1]);
            claimantAuxillaryRecord.FundingDelayedBeyondTPOCStartDate2 = tpoc2[2].ToString();
        }
        break;

In welchem ​​Format befindet sich die datetime-Zeichenfolge gerade?
Falle1234

11
Und welche Relevanz hat Ihr Code-Snippet für die Frage?
Darin Dimitrov

2
Ich bin ein wenig unklar; Arbeiten Sie mit einer Zeichenfolgendarstellung eines Datums oder eines DateTime-Objekts? Angenommen, es handelt sich um ein DateTime-Objekt, das Sie einfach aufrufen können obj.ToString("yyyyMMdd").
Nathan Taylor

Eigentlich ist TPOCDate2 bereits eine Variable und ich möchte nur die Elemente in tpoc2 [0] in das Format JJJJMMTT konvertieren. Hoffe, dies beantwortet Ihre Frage
Ashutosh

Bist du irgendwo festgefahren?
Dariusz Woźniak

Antworten:


224

Wenn Sie ein Datum in einer Zeichenfolge mit dem Format "TTMMJJJJ" haben und es in "JJJJMMTT" konvertieren möchten, können Sie Folgendes tun:

DateTime dt = DateTime.ParseExact(dateString, "ddMMyyyy", 
                                  CultureInfo.InvariantCulture);
dt.ToString("yyyyMMdd");

4
Ich bin mit deinem Code hängen geblieben, dieser hat gut funktioniert DateTime.TryParse (stringValue, out outputInDateTime);
DJ '15.

64

Parsing DateTime:

Verwenden Sie eine der folgenden Methoden, um eine DateTime zu analysieren:

Alternativ können Sie das Try-Parse- Muster verwenden:

Lesen Sie mehr über benutzerdefinierte Zeichenfolgen im Datums- und Zeitformat .

Konvertieren von DateTime in eine Zeichenfolge:

Um eine DateTime als Zeichenfolge im Format "yyyyMMdd" zurückzugeben, können Sie die ToStringMethode verwenden.

  • Beispiel für ein Code-Snippet: string date = DateTime.ToString("yyyyMMdd");
  • Beachten Sie das Großbuchstaben M. ‚s bis Monate beziehen und untere Gefasste m ‘ s auf Minuten.

Dein Fall:

In Ihrem Fall ist es am bequemsten, wenn Sie das Szenario nicht behandeln möchten, wenn das Datum ein anderes Format oder eine andere Fehldarstellung hat ParseExact:

string dateToParse = "20170506";
DateTime parsedDate = DateTime.ParseExact(dateToParse, 
                                          "yyyyMMdd",
                                          CultureInfo.InvariantCulture);

7
Dies ist ein altes Thema, aber für diejenigen, die suchen, ist der obige Link "kulturspezifisches Format" jetzt ein toter Link. Hier ist eine, die aktuelle und informative benutzerdefinierte

40

Sie können Ihre Zeichenfolge in einen DateTimeWert wie den folgenden konvertieren :

DateTime date = DateTime.Parse(something);

Sie können einen DateTimeWert wie folgt in eine formatierte Zeichenfolge konvertieren :

date.ToString("yyyyMMdd");

11

Zeichenfolge im Datumsformat JJJJ-MM-TT: Beispiel:

TxtCalStDate.Text = Convert.ToDateTime(objItem["StartDate"]).ToString("yyyy/MM/dd");   

10

Wenn Sie DATE auch als Zeichenfolge mit TIME haben möchten . Wir können so machen:

    //Date and Time is taking as current system Date-Time    
    DateTime.Now.ToString("yyyyMMdd-HHmmss");

7
Minuten sollten klein sein "m" !? "yyyyMMdd-HHmmss"
CeOnSql

6

Verwenden DateTime.TryParseExact()Sie diese Option, wenn Sie mit einem bestimmten Datumsformat übereinstimmen möchten

   string format = "yyyyMMdd"; 
    DateTime dateTime;
    DateTime.TryParseExact(dateString, format, CultureInfo.InvariantCulture,
                                             DateTimeStyles.None, out dateTime);

5

Sie könnten DateTime.TryParse()anstelle von verwenden DateTime.Parse().
Mit haben TryParse()Sie einen Rückgabewert, wenn es erfolgreich war und mit müssen Parse()Sie eine Ausnahme behandeln


5

Einfach so machen.

string yourFormat = DateTime.Now.ToString("yyyyMMdd");

Viel Spaß beim Codieren :)


3

Nein, es ist eine Zeichenfolge mit JJJJ / MM / TT und ich brauche es im Format JJJJMMTT

Wenn Sie nur die Schrägstriche von einer Zeichenfolge entfernen müssen, ersetzen Sie sie nicht einfach?

Beispiel:

myDateString = "2013/03/28";
myDateString = myDateString.Replace("/", "");

myDateString sollte jetzt "20130328" sein.

Weniger übertrieben :)


3

Dies ist die einfache Möglichkeit, in ein Format zu konvertieren

 DateTime.Now.ToString("yyyyMMdd");

2

Basierend auf den Eigenschaftsnamen sieht es so aus, als würden Sie versuchen, eine Zeichenfolge durch Zuweisung in ein Datum zu konvertieren:

claimantAuxillaryRecord.TPOCDate2 = tpoc2[0].ToString();

Dies liegt wahrscheinlich an der aktuellen UI-Kultur und kann daher die Datumszeichenfolge bei der Zuweisung nicht richtig interpretieren.


Nein, es ist eine Zeichenfolge mit JJJJ / MM / TT und ich brauche es im Format JJJJMMTT
Ashutosh

und während ClaimantAuxillaryRecord.TPOCDate2 = tpoc2 [0] .ToString ("yyyyMMdd"); Es gibt einige Build-Fehler. Die beste überladene Methodenübereinstimmung für 'string.ToString (System.IFormatProvider)' hat einige ungültige Argumente
Ashutosh

@ Matt - wirklich? Sie haben eine Antwort über 4 Jahre bearbeitet, die nicht einmal als Antwort zum Hinzufügen eines Tabs markiert war. Das ist ein schwerwiegender Fall von Zwangsstörungen, den Sie dort haben.
Peter

1

Von C # 6:

var dateTimeUtcAsString = $"{DateTime.UtcNow:o}";

Das Ergebnis ist: "2019-01-15T11: 46: 33.2752667Z"


0

Ein einfacherer Weg, den ich auch bei der Suche nach dieser Antwort gefunden habe;

string date = DateTime.Now.ToString("yyyyMMdd", System.Globalization.CultureInfo.GetCultureInfo("en-US"));

Wie wäre es mit einem Wert für DateTime? Wie DateTime newDate = DateTime.Parse(Session["date"].ToString());?
WTFZane

0

Sie können diese Codes ausprobieren

claimantAuxillaryRecord.TPOCDate2  = Convert.ToDateTime(tpoc2[0]).ToString("yyyyMMdd"); 

Oder

claimantAuxillaryRecord.TPOCDate2 = Convert.ToDateTime(tpoc2[0]).ToString("yyyyMMdd hh:mm:ss"); 

1
Verwenden Sie aus Liebe zu Gott (unserem Lord-Retter Harambe) niemals Convert.ToDateTime ... Dieses Ding ist so langsam (~ 100 ms)! Verwenden Sie einfach ParseExact oder TryParse - waaaaay schneller !!!
Koshera
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.