2012-11-06 17 views
31

Eventuali duplicati:
How do I use DateTime.TryParse with a Nullable<DateTime>?Conversione di stringhe in Nullable DateTime

ho questa riga di codice

DateTime? dt = Condition == true ? (DateTime?)Convert.ToDateTime(stringDate) : null; 

È questo il modo corretto per convertire la stringa a Nullable DateTime oppure esiste un metodo diretto per convertire senza conversione a DateTime e di nuovo casting a Nullable DateTime?

+1

È possibile eseguire il cast di null su nullable DateTime: 'Condition == true? Convert.ToDateTime (stringDate): (DateTime?) Null; ':) – Artemix

+0

' DateTime? dt = dt.GetValueOrDefault (DateTime.Now); ' – Jnr

risposta

49

Si può provare questo: -

DateTime? dt = string.IsNullOrEmpty(date) ? (DateTime?)null : DateTime.Parse(date); 
+2

Potrei suggerire' string.IsNullOrEmpty (date) 'piuttosto che' date == null'. – HackedByChinese

+0

Non funzionerebbe se una stringa che non era né vuota né una data valida è stata passata. Per soluzioni migliori, consulta http://stackoverflow.com/questions/192121/how-do-i-use-datetime-tryparse-with-a-nullaulla ora – thelem

3
DateTime? dt = (String.IsNullOrEmpty(stringData) ? (DateTime?)null : DateTime.Parse(dateString)); 
1

Semplicemente assegnato senza getto a tutti :)

DateTime? dt = Condition == true ? Convert.ToDateTime(stringDate) : null; 
11

Siete in grado di costruire un metodo per fare questo:

public static DateTime? TryParse(string stringDate) 
{ 
    DateTime date; 
    return DateTime.TryParse(stringDate, out date) ? date : (DateTime?)null; 
} 
+2

Ciò non funzionerà poiché la data non è un datetime nullable. – bret

+0

@bret: hai provato questo? –