C#中当前UTC时间转微秒格式及指定格式输出异常问题
问题1:如何在C#中将当前UTC时间转换为微秒格式?
在C#里,要获取UTC时间的微秒表示,可通过DateTime.UtcNow的ticks属性计算:1个tick等于100纳秒,因此微秒数为ticks / 10。如果需要输出带微秒的时间字符串,用自定义格式字符串即可:
// 获取微秒数值 long utcMicroseconds = DateTime.UtcNow.Ticks / 10; // 格式化为带微秒的UTC时间字符串 string utcMicrosecondStr = DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ss.ffffffZ");
注意:.NET Framework中DateTime.UtcNow的精度受系统时钟限制,.NET Core/.NET 5+版本的精度更高。
问题2:UTC时间格式化为yyyy-MM-ddTHH:mm:ss.fffZ格式
你的代码存在以下问题:
- 毫秒的格式符是
fff,不是sss——ss代表秒数,sss会被解析为“秒+两个s字符”,这就是输出出现36:36Z的原因。 - 多余的
Convert.ToDateTime(DateTime.UtcNow)完全没必要,DateTime.UtcNow本身就是DateTime类型。 - 若需24小时制时间,应使用
HH而非hh(hh是12小时制,会导致时间显示错误)。
正确代码如下:
string formattedUtcTime = DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ss.fffZ");
输出示例:2024-05-10T09:56:36.456Z
内容的提问来源于stack exchange,提问作者VA1267
相关产品推荐
相关产品推荐

