perché DateTime.ToString ("gg / MM / aaaa") mi dà gg-MM-aaaa?


155

Voglio che il mio datetime sia convertito in una stringa in formato "gg / MM / aaaa"

Ogni volta che lo converto usando DateTime.ToString("dd/MM/yyyy"), ottengo dd-MM-yyyyinvece.

Esiste una sorta di informazione sulla cultura che devo impostare?


do DateTime.ToString ("gg / MM / aaaa");
jimplode,

2
L'ho fatto, non ha funzionato, il problema non è le date, è il "-", voglio che sia un "/" come ho specificato
Diskdrive

7
usare MM anziché mm - mm rappresenta i minuti e non i mesi.
Lloyd Powell,


La documentazione MSDN per DateTime.ToString è irrimediabilmente errata: " Ad esempio, la stringa di formato" MM / gg / aaaaHH: mm "visualizza la stringa di data e ora in un formato fisso ... La stringa di formato utilizza" / "come fisso separatore di date indipendentemente dalle impostazioni specifiche della cultura " .
Colonnello Panic,

Risposte:


243

La barra è un delimitatore di data, pertanto verrà utilizzato il delimitatore di data della cultura corrente.

Se vuoi codificarlo per usare sempre la barra, puoi fare qualcosa del genere:

DateTime.ToString("dd'/'MM'/'yyyy")

2
@spender - in alcune culture lo sono.
Daniel A. White,

Grazie per la pronta risposta. Hai ragione. Ti darò la risposta corretta
Diskdrive,

6
Puoi anche utilizzare questo formato: dateTime.ToString (@ "yyyy \ / MM \ / dd")
base2


2
Anche l'escape della stringa di formato usando la barra rovesciata funziona: DateTime.Now.ToString ("dd \\ / MM \\ / yyyy");
TomB,

61

Passa CultureInfo.InvariantCulture come secondo parametro di DateTime, restituirà la stringa come desideri, anche un formato molto speciale:

DateTime.Now.ToString("dd|MM|yyyy", CultureInfo.InvariantCulture)

tornerà: 28 | 02 | 2014


Questo codice è più chiaro rispetto alla risposta accettata (intendo aggiunta CultureInfo). Sembra almeno meglio che sfuggire alle barre dagli apostrofi.
Sergey,

2
Decisamente più facile da leggere rispetto all'utilizzo dei caratteri di escape. Sono un po 'scioccato di non sapere per tutto il tempo che i miei formati di data sarebbero stati sovrascritti!
Savage

10

Aggiungi CultureInfo.InvariantCulturecome argomento:

using System.Globalization;

...

var dateTime = new DateTime(2016,8,16);
dateTime.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);

Sarà di ritorno:

"16/08/2016"

se lo sviluppatore utilizza il metodo tostring con alcune lettere come M m ss ecc., otterrà un risultato errato con la soluzione, ad esempio Datetime.Now.ToString ("yyyy / dd / mm / Month", CultureInfo.InvariantCulture) non risulterà 2017/01 / 02 / Mese risulterà 2017/01/02 / 2onth
Okan SARICA il

@OkanSARICA se vuoi aggiungere il suffisso alla data con "/ Month", dovresti farlo dopo il metodo ToString. DateTime.Now.ToString ("yyyy / MM / dd", CultureInfo.InvariantCulture) + "/ Month";
Mikael Engver,

1

Se usi MVC, tabelle, funziona così:

<td>@(((DateTime)detalle.fec).ToString("dd'/'MM'/'yyyy"))</td>

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.