Come convertire DateTime in / da un formato stringa specifico (in entrambi i modi, ad es. Il formato specificato è "yyyyMMdd")?


132

Sto riscontrando un problema durante la conversione di un datetime in formato stringa ma non riesco a convertirlo utilizzando il "yyyyMMdd"formato.

Il mio codice è:

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 quale formato è la stringa datetime in questo momento?
Falle1234,

11
E qual è la pertinenza del tuo frammento di codice per la domanda?
Darin Dimitrov,

2
Sono un po 'poco chiaro; stai lavorando con una rappresentazione in formato stringa di una data o un oggetto DateTime? Supponendo che sia un oggetto DateTime che puoi semplicemente chiamare obj.ToString("yyyyMMdd");
Nathan Taylor,

In realtà TPOCDate2 è già una variabile e voglio solo convertire gli elemnts in tpoc2 [0] per essere nel formato yyyyMMdd. Spero che questo risponda alla tua domanda
Ashutosh,

Sei bloccato da qualche parte?
Dariusz Woźniak,

Risposte:


224

se hai una data in una stringa con il formato "ddMMyyyy" e vuoi convertirla in "yyyyMMdd" potresti fare così:

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

4
Bloccato con il tuo codice, questo ha funzionato bene DateTime. TryParse (stringValue, out outputInDateTime);
DJ '

64

Data di analisi

Per analizzare un DateTime, utilizzare uno dei seguenti metodi:

In alternativa, è possibile utilizzare il modello try-parse :

Ulteriori informazioni sulle stringhe personalizzate di formato di data e ora .

Conversione di DateTime in una stringa:

Per restituire un DateTime come stringa nel formato "yyyyMMdd", è possibile utilizzare il ToStringmetodo

  • Esempio di frammento di codice: string date = DateTime.ToString("yyyyMMdd");
  • Nota in maiuscolo M 's si riferiscono ai mesi e in minuscolo m ' s di minuti.

Il tuo caso:

Nel tuo caso, supponendo che tu non voglia gestire lo scenario quando la data è di formato diverso o mancante, sarebbe più conveniente usare ParseExact:

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

7
Questo è un vecchio argomento, ma per coloro che cercano, il link sopra, "formato specifico per la cultura" è ora un link non funzionante. Eccone uno che è stringhe di formato di data e ora personalizzate

40

Puoi convertire la tua stringa in un DateTimevalore come questo:

DateTime date = DateTime.Parse(something);

Puoi convertire un DateTimevalore in una stringa formattata come questa:

date.ToString("yyyyMMdd");

11

Stringa nel formato data aaaa-MM-gg: Esempio:

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

10

Se vuoi avere DATE come stringa anche con TIME . Possiamo fare così:

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

7
minuti dovrebbe essere piccola "m"!? "yyyyMMdd-HHmmss"
CeOnSql

6

Utilizzare DateTime.TryParseExact()se si desidera abbinare un formato data specifico

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

5

È possibile utilizzare DateTime.TryParse()invece di DateTime.Parse().
Con TryParse()te hai un valore di ritorno se ha avuto successo e con Parse()te devi gestire un'eccezione


5

Basta fare così.

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

Buona programmazione :)


3

no è una stringa con yyyy / mm / dd e ne ho bisogno nel formato yyyyMMdd

Se hai solo bisogno di rimuovere le barre da una stringa, non le sostituisci?

Esempio:

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

myDateString ora dovrebbe essere "20130328".

Meno di un eccessivo :)


3

È il modo semplice per convertire in formato

 DateTime.Now.ToString("yyyyMMdd");

2

In base ai nomi delle proprietà sembra che tu stia provando a convertire una stringa in una data per incarico:

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

Probabilmente è dovuto all'attuale cultura dell'interfaccia utente e quindi non può interpretare correttamente la stringa della data quando assegnata.


no è una stringa con aaaa / mm / gg e ne ho bisogno nel formato aaaa MMdd
Ashutosh

e mentre si fa reclamante AuxillaryRecord.TPOCDate2 = tpoc2 [0] .ToString ("yyyyMMdd"); dà alcuni errori di compilazione. La migliore corrispondenza del metodo sovraccarico per 'string.ToString (System.IFormatProvider)' ha alcuni argomenti non validi
Ashutosh

@Matt - davvero? Hai modificato una risposta di 4 anni che non è stata nemmeno contrassegnata come risposta per aggiungere una scheda? Questo è un brutto caso di disturbo ossessivo compulsivo che hai lì.
Peter,

1

Da C # 6:

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

Il risultato sarà: "2019-01-15T11: 46: 33.2752667Z"


0

Un modo più semplice di trovare anche questa risposta;

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

Che ne dici di avere un valore per DateTime? Come DateTime newDate = DateTime.Parse(Session["date"].ToString());?
WTFZane,

0

Puoi provare questi codici

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

O

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

1
Per amore di Dio (il nostro signore salvatore Harambe), non usare mai Convert.ToDateTime ... Questa cosa è così lenta (~ 100ms)! Basta usare ParseExact o TryParse - waaaaay più veloce !!!
Koshera,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.