Étant donné un objet DateTime, comment obtenir une date ISO 8601 au format chaîne ?

Étant donné un objet DateTime, comment obtenir une date ISO 8601 au format chaîne ?

Note aux lecteurs :

Plusieurs commentateurs ont signalé des problèmes dans cette réponse (liés notamment à la première suggestion). Consultez la section des commentaires pour plus d’informations.

// Do not use this
DateTime.UtcNow.ToString("yyyy-MM-ddTHH\\:mm\\:ss.fffffffzzz", CultureInfo.InvariantCulture);

En utilisant un formatage de date-heure personnalisé, cela vous donne une date similaire à

2008-09-22T13:57:31.2311892-04:00.

Une autre façon est :

// Prefer this, to avoid having to manually define a framework-provided format
DateTime.UtcNow.ToString("o", CultureInfo.InvariantCulture);

qui utilise le style standard “aller-retour” (ISO 8601) pour vous donner

2008-09-22T14:01:54.9571247Z.

Pour obtenir le format spécifié, vous pouvez utiliser :

DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ssZ", CultureInfo.InvariantCulture)