You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure DevOps REST API返回的日期字符串无法解析为DateTime如何处理

问题原因

  • 你拿到的日期字符串不符合标准ISO 8601格式:秒与亚秒(毫秒/微秒/纳秒)部分缺少小数点分隔,导致默认解析器无法识别两部分的边界
  • 亚秒部分长度超过.NET DateTime 类型支持的最大7位精度(DateTime 精度为100纳秒,对应最多7位小数),多余位数会触发解析异常

解决方案

你可以先对原始日期字符串做格式修正,再用指定格式解析,示例代码如下:

public static DateTime ParseAzureDevOpsWorkItemDate(string rawDateStr)
{
    // 1. 给秒和亚秒部分补小数点:标准格式前19位固定为 yyyy-MM-ddTHH:mm:ss
    if (rawDateStr.Length > 19 && rawDateStr[19] != '.')
    {
        rawDateStr = rawDateStr.Insert(19, ".");
    }

    // 2. 截断多余的亚秒位,只保留7位,末尾保留Z标识
    const int maxValidLength = 28; // 19位基础部分 + 1位小数点 +7位亚秒 +1位Z = 28位
    if (rawDateStr.Length > maxValidLength)
    {
        rawDateStr = rawDateStr.Substring(0, maxValidLength - 1) + "Z";
    }

    // 3. 指定格式解析,大写F表示亚秒位可选,兼容不足7位的场景
    return DateTime.ParseExact(
        rawDateStr, 
        "yyyy-MM-ddTHH:mm:ss.FFFFFFFZ", 
        null, 
        System.Globalization.DateTimeStyles.RoundtripKind
    );
}

调用示例

string rawDt = "2021-09-28T23:59:2411111677Z";
DateTime parsedDt = ParseAzureDevOpsWorkItemDate(rawDt);
// 解析结果为:2021-09-28 23:59:24.1111116 UTC

内容的提问来源于stack exchange,提问作者john

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 00:36:04