
ISO 8601 is a general, international standard on how the complex representation of time stamps can be formulated in a general way - including the consideration of time formats, time zones and resolution.
Therefore, ISO 8601 is generally recommended for the exchange of time information, whether in databases, XML files or any other potential technology-neutral exchange format.
.NET does not have its own method for outputting ISO 8601, but it does have a standard-compliant option when formatting time objects: the o parameter.
To get a format like 2020-01-17T10:20:30.0000000Z you can this snippet:
1
2 DateTime dat = new DateTime(2020, 1, 17, 10, 20, 30, DateTimeKind.Utc);
3 Console.WriteLine("{0} ({1}) --> {0:o}", dat, dat.Kind);
My brain is unfortunately filled with a lot of nonsense, so that I keep forgetting that “o” is the appropriate format option. Therefore I wrote a little extension:
1 public static string ToISO8601(this DateTimeOffset dt)
2 {
3 return dt.ToString("o");
4 }
5 public static string ToISO8601(this DateTime dt)
6 {
7 return dt.ToString("o");
8 }
Finally you can just write
1Console.WriteLine(dt.ToISO8601);
Related articles

Oct 05, 2026 - 12 min read
Problem Details in ASP.NET Core and .NET 11
builder.Services.AddProblemDetails() registers infrastructure. It does not create an error contract. An ASP.NET Core request can fail during …

Sep 21, 2026 - 11 min read
Resilience in .NET with Microsoft.Extensions.Resilience
Retries are the most visible resilience strategy and the easiest one to misuse. Repeating a failing call can recover from a short network …

Sep 14, 2026 - 10 min read
What Matters in ASP.NET Core 11
ASP.NET Core 11 has no single feature that fundamentally changes how web applications are built. That is not a criticism. Mature frameworks …
Let's Work Together
Looking for an experienced Platform Architect or Engineer for your next project? Whether it's cloud migration, platform modernization or building new solutions from scratch - I'm here to help you succeed.
