Avatar ·

How to get a date in ISO 8601 format from a DateTime object in C#?

Hello everyone! I'm new to C# and ran into an unexpected problem. I need to serialize a date and time into a string strictly according to the ISO 8601 standard (for example, "2023-10-27T14:30:00Z" or "2023-10-27T17:30:00+03:00"). I've tried a bunch of options, but the result is always somehow wrong. Here's my code:
DateTime now = DateTime.Now;
string dateString = now.ToString(); 
Console.WriteLine(dateString); // Outputs "27.10.2023 14:30:00" - not what I need!
I tried using the "s" specifier:
string isoString = now.ToString("s"); 
Console.WriteLine(isoString); // "2023-10-27T14:30:00" - better, but no timezone
Also, I noticed that if I use `DateTime.UtcNow`, I get the time without considering the local offset. I need the date to always