Avatar ·

如何在C#中从DateTime对象获取ISO 8601格式的日期?

大家好!我是C#新手,遇到了一个意想不到的问题。我需要将日期和时间严格按ISO 8601标准序列化为字符串(例如,“2023-10-27T14:30:00Z”或“2023-10-27T17:30:00+03:00”)。我试了很多方法,但结果总是不对。 这是我的代码:
DateTime now = DateTime.Now;
string dateString = now.ToString(); 
Console.WriteLine(dateString); // 输出“27.10.2023 14:30:00” - 不对!
我尝试使用“s”说明符:
string isoString = now.ToString("s"); 
Console.WriteLine(isoString); // “2023-10-27T14:30:00” - 好一些,但没有时区
另外,我注意到如果使用`DateTime.UtcNow`,得到的时间没有考虑本地偏移。我需要日期始终带有正确的时区,对于UTC则在末尾加上字母“Z”。我尝试在格式中添加“K”,但结果很混乱。请告诉我如何正确做到这一点?最好有不同场景的示例。