Quiero convertir un DateTime?
a cadena. Si una fecha es nulo luego regresar ""
, cosa devolver un formato de cadena como esta: "2020-03-05T07:52:59.665Z"
. El código es algo como esto pero no funcionará. Dijo "DateTime?"
que no contienen una definición para "ToUniversalTime". Alguien sabe como arreglar esto?
DateTime? date = DateTime.UtcNow;
var dateInUTCString = date == null ? "" : date.ToUniversalTime().ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fff'Z'");
.ToString("o")
?.ToString("o")
investigaré más. ¡Gracias!Respuestas:
La fecha y hora? tiene una propiedad Value y una propiedad HasValue
Tratar:
Puedes usar la versión corta:
fuente
Si bien puede usar la
Value
propiedad directamente según la respuesta de Leszek, probablemente usaría el operador condicional nulo junto con el operador de fusión nula:Aquí
?.
solo dará como resultado un valor nulo sidate
es nulo, y el??
operador proporcionará un valor predeterminado si el resultado de ladate?.ToUniversalTime().ToString(...)
llamada es nulo (lo que solo sucedería sidate
es nulo).Tenga en cuenta que realmente desea especificar la cultura invariante para evitar obtener resultados inesperados cuando la cultura del hilo actual no utiliza el calendario gregoriano, y no necesita citar todos esos literales en la cadena de formato. Ciertamente funciona cuando lo haces, pero es más difícil de leer IMO.
Si no le importa cuánta precisión se expresa en la cadena, puede simplificar el código utilizando la cadena de formato estándar "O" :
En ese punto no necesita especificar,
CultureInfo.InvariantCulture
ya que siempre lo usa "O".fuente
"O"
como una cadena de formato? docs.microsoft.com/en-us/dotnet/standard/base-types/…Z
al final de la cadena