如何将DateTime.Now转换为2018-04-07T00:00:00Z格式?
解决DateTime转换为ISO 8601 UTC格式的问题
嗨,我来帮你搞定这个时间格式转换的需求!你想要的2018-04-07T00:00:00Z是标准的ISO 8601 UTC时间格式,这里给你两种最常用的正确实现方式:
方法一:直接用DateTime.ToString指定格式(最简洁)
因为目标格式带Z代表UTC时间,所以优先使用DateTime.UtcNow获取UTC时间,再通过格式字符串输出:
// 直接生成目标格式的字符串(无引号) string formattedDate = DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ssZ");
如果你的源时间是本地时间(DateTime.Now),需要先转成UTC再格式化:
string formattedDate = DateTime.Now.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ");
方法二:用Json.NET序列化(适合序列化场景)
你当前用的JsonConvert.SerializeObject其实也能实现,但需要调整序列化设置,确保输出UTC格式且符合ISO标准:
var jsonSettings = new JsonSerializerSettings { DateFormatHandling = DateFormatHandling.IsoDateFormat, DateTimeZoneHandling = DateTimeZoneHandling.Utc // 强制转UTC }; // 序列化后会带双引号,如果需要去掉可以额外处理 string date = JsonConvert.SerializeObject(DateTime.Now, jsonSettings);
这种方式适合你本来就在做JSON序列化的场景,单独转格式的话方法一更高效。
小提示
Z是ISO 8601里的“零时区标记”,对应UTC时间,所以一定要确保你的时间是UTC时区的,否则格式正确但时间会有偏差哦。- 格式字符串里的
HH代表24小时制,如果你需要12小时制可以换成hh,但通常这种标准格式用24小时制更规范。
内容的提问来源于stack exchange,提问作者Ali Shawky
相关产品推荐
相关产品推荐

