Avatar ·

Comment obtenir une date au format ISO 8601 à partir d'un objet DateTime en C# ?

Bonjour à tous ! Je suis débutant en C# et j'ai rencontré un problème inattendu. J'ai besoin de sérialiser une date et une heure en une chaîne strictement selon la norme ISO 8601 (par exemple, "2023-10-27T14:30:00Z" ou "2023-10-27T17:30:00+03:00"). J'ai essayé plein d'options, mais le résultat est toujours incorrect. Voici mon code :
DateTime now = DateTime.Now;
string dateString = now.ToString(); 
Console.WriteLine(dateString); // Affiche "27.10.2023 14:30:00" - pas bon !
J'ai essayé d'utiliser le spécificateur "s" :
string isoString = now.ToString("s"); 
Console.WriteLine(isoString); // "2023-10-27T14:30:00" - mieux, mais pas de fuseau horaire
De plus, j'ai remarqué que si j'utilise `DateTime.UtcNow`, j'obtiens l'heure sans tenir compte du décalage local. J'ai besoin que la date ait toujours le bon fuseau horaire, et pour UTC, la lettre "Z" à la fin. J'ai essayé d'ajouter "K" au format, mais ça donne un résultat confus. Pouvez-vous m'indiquer comment faire correctement ? De préférence avec des exemples pour différents scénarios.