¿Cómo obtener una fecha en formato ISO 8601 a partir de un objeto DateTime en C#?
¡Hola a todos! Soy nuevo en C# y me encontré con un problema inesperado. Necesito serializar una fecha y hora a una cadena estrictamente según el estándar ISO 8601 (por ejemplo, "2023-10-27T14:30:00Z" o "2023-10-27T17:30:00+03:00"). Probé muchas opciones, pero el resultado siempre es incorrecto.
Aquí está mi código:
DateTime now = DateTime.Now;
string dateString = now.ToString();
Console.WriteLine(dateString); // Muestra "27.10.2023 14:30:00" - ¡no es correcto!
Intenté usar el especificador "s":
string isoString = now.ToString("s");
Console.WriteLine(isoString); // "2023-10-27T14:30:00" - mejor, pero sin zona horaria
Además, noté que si uso `DateTime.UtcNow`, obtengo la hora sin tener en cuenta el desplazamiento local. Necesito que la fecha siempre tenga la zona horaria correcta, y para UTC, que termine con la letra "Z". Intenté agregar "K" al formato, pero se vuelve un desastre. ¿Alguien puede indicarme cómo hacerlo correctamente? Preferiblemente con ejemplos para diferentes escenarios.