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;
Ashutosh
quelle
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");
Falle1234
quelle
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);
Dariusz Woźniak
quelle
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");
SLaks
quelle
11

Zeichenfolge im Datumsformat JJJJ-MM-TT: Beispiel:

TxtCalStDate.Text = Convert.ToDateTime(objItem["StartDate"]).ToString("yyyy/MM/dd");   
NSiva
quelle
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");
Anish
quelle
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);
Mudassir Hasan
quelle
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

Peter
quelle
5

Einfach so machen.

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

Viel Spaß beim Codieren :)

Prashant-Systematix
quelle
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 :)

SergioMSCosta
quelle
3

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

 DateTime.Now.ToString("yyyyMMdd");
Manoj Kumar
quelle
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.

Peter
quelle
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"

ben alfasi
quelle
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"));
Enrique Ortiz Sánchez
quelle
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"); 
A. Zalonis
quelle
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