DateTimeOffset.Now输出格式与指定ISO 8601格式不一致,如何调整?
DateTimeOffset 输出指定ISO 8601格式的实现方案
核心实现思路
你需要的是带3位毫秒、时区偏移的ISO 8601格式,直接给DateTimeOffset的ToString方法指定对应格式字符串即可,无需复杂处理。
方案1:使用内置往返格式符(推荐)
.NET内置的"O"/"o"标准格式符,默认输出的就是符合要求的ISO 8601完整格式,写法最简单:
string endFormatted = end.ToString("O");
方案2:自定义格式字符串(可控性更高)
如果需要明确控制每一位的格式,可以使用自定义格式串,同时指定固定文化避免系统区域设置影响输出:
using System.Globalization; string endFormatted = end.ToString("yyyy-MM-ddTHH:mm:ss.fffzzz", CultureInfo.InvariantCulture);
格式符说明:
yyyy:4位年份MM:2位月份,不足补0dd:2位日期,不足补0T:日期与时间的固定分隔符HH:24小时制2位小时,不足补0mm:2位分钟,不足补0ss:2位秒,不足补0fff:3位毫秒,不足补0zzz:±HH:mm格式的时区偏移,和你需要的-05:00格式完全匹配
调试显示说明
调试时悬停看到的日期格式是调试器调用了系统默认区域的格式化规则,和你实际代码输出的格式无关,按上述方法指定输出格式即可得到和start完全一致的结果。
内容的提问来源于stack exchange,提问作者MarkCo
相关产品推荐
相关产品推荐

