2015-08-05 12 views
7

sto usando "yyyy-MM-dd" più volte nel codice per la data di formattazioneCome utilizzare il formato data come costante in C#?

Ad esempio:

var targetdate = Date.ToString("yyyy-MM-dd"); 

E 'possibile dichiarare il formato più costante, in modo che l'utilizzo del codice ripetutamente può essere evitato

+1

Perché non modificare la cultura in modo che venga applicata automaticamente dappertutto –

risposta

6

Utilizzare questo come

const string dateFormat = "yyyy-MM-dd"; 

//Use 
var targetdate = Date.ToString(dateFormat); 

O

//for public scope 
public static readonly string DateFormat = "yyyy-MM-dd"; 

//Use 
var targetdate = Date.ToString(DateFormat); 
//from outside the class, you have to use in this way 
var targetdate = Date.ToString(ClassName.DateFormat); 
+0

Sì. Il 'const' può esistere localmente con il corpo di un metodo (accessor, ecc.), Oppure può essere un membro diretto di' class' (o 'struct'). Se è in una classe, può essere dichiarato (ad esempio) 'internal',' protected' o 'public' per essere accessibile da altre classi. Se si accede da un'altra classe non derivante, usare 'NameOfClass.DateFormat' per fare riferimento a' const'. –

8

Utilizzare un metodo di estensione, senza dichiarare qualsiasi formato nuovo e di nuovo come questo:

public static class DateExtension 
{ 
    public static string ToStandardString(this DateTime value) 
    { 
     return value.ToString(
      "yyyy-MM-dd", 
      System.Globalization.CultureInfo.InvariantCulture); 
    } 
} 

in modo da utilizzare in questo modo

var targetdate = Date.ToStandardString(); 
+2

È necessario ricordare che il metodo deve essere statico in una classe statica. – Scoregraphic

+4

Suggerirei di usare anche qui la cultura invariante - io * molto * molto dubbio che l'OP vuole che questo sia influenzato dalla cultura. –

2

Un'altra opzione che si può fare è utilizzare il DateTimeFormatInfo sovraccarico su .ToString(...) anziché sul sovraccarico string.

public static readonly System.Globalization.DateTimeFormatInfo MyDateTimeFormatInfo 
    = new System.Globalization.DateTimeFormatInfo() 
{ 
    ShortDatePattern = "yyyy-MM-dd", 
    LongTimePattern = "", 
}; 

ora si può fare var targetdate = DateTime.Now.ToString(MyDateTimeFormatInfo); che è più o meno la stessa cosa che usare stringa, ma si ha molto più controllo su molte altre proprietà di formattazione.

Problemi correlati