validar - set datetime null c#
C#Nullable<DateTime> a cadena (10)
Al llamar a .ToString()
en un Nullable<T>
que es null
se devolverá una cadena vacía.
Tengo un DateTime?
variable, a veces el valor es null
, ¿cómo puedo devolver una cadena vacía ""
cuando el valor es null
o el valor DateTime
cuando no es null
?
Aunque muchas de estas respuestas son correctas, todas son innecesariamente complejas. El resultado de llamar a ToString en un DateTime anulable ya es una cadena vacía si el valor es lógicamente nulo. Simplemente llame a ToString en su valor; Hará exactamente lo que quieras.
En realidad, este es el comportamiento predeterminado para los tipos de Nullable, que sin un valor no devuelven nada:
public class Test {
public static void Main() {
System.DateTime? dt = null;
System.Console.WriteLine("<{0}>", dt.ToString());
dt = System.DateTime.Now;
System.Console.WriteLine("<{0}>", dt.ToString());
}
}
esto rinde
<>
<2009-09-18 19:16:09>
Podrías escribir un método de extensión.
public static string ToStringSafe(this DateTime? t) {
return t.HasValue ? t.Value.ToString() : String.Empty;
}
...
var str = myVariable.ToStringSafe();
Todo lo que necesitas hacer es simplemente llamar a .ToString()
. Maneja el Nullable<T>
para el valor null
.
Aquí está la fuente de .NET Framework para Nullable<T>.ToString()
:
public override string ToString() {
return hasValue ? value.ToString() : "";
}
DateTime d?;
string s = d.HasValue ? d.ToString() : string.Empty;
DateTime? MyNullableDT;
....
if (MyNullableDT.HasValue)
{
return MyNullableDT.Value.ToString();
}
return "";
DateTime? d;
// stuff manipulating d;
return d != null ? d.Value.ToString() : String.Empty;
if (aDate.HasValue)
return aDate;
else
return string.Empty;
string date = myVariable.HasValue ? myVariable.Value.ToString() : string.Empty;