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

C#如何将XML读取的PT0S值转换为decimal类型存入数据库

问题解决方法

问题原因

你读取到的PT0S是ISO 8601标准的持续时间格式字符串,不是直接的数值格式,因此无法直接用Convert.ToDecimal转换:

  • 格式前缀P表示周期(Period),T表示后续为时间部分,PT0S的完整含义是「时间间隔为0秒」
  • 你提供的XML结构中该字段标注type="double",对应的就是持续时间转换为数值单位后的浮点值,和后续转换逻辑匹配。

解决步骤

C# 自带的System.Xml.XmlConvert类专门适配XML标准格式的转换,你可以先把字符串解析为TimeSpan类型,再按你的业务要求转为对应单位的数值,最终转成decimal即可。

示例代码

// 从XML读取到的原始值
string durationStr = "PT0S";
// 解析ISO 8601持续时间为TimeSpan
TimeSpan timeSpan = System.Xml.XmlConvert.ToTimeSpan(durationStr);
// 按业务需要选择转换单位,示例为转总秒数,也可替换为TotalMilliseconds/TotalMinutes等
decimal result = Convert.ToDecimal(timeSpan.TotalSeconds);
// 后续直接将result存入decimal类型的数据库字段即可

扩展说明

如果你的业务逻辑中该字段对应其他时间单位,只需替换TotalSeconds为对应属性即可,比如:

  • 存总毫秒数:使用timeSpan.TotalMilliseconds
  • 存总分钟数:使用timeSpan.TotalMinutes
    该方法对所有合法的ISO 8601持续时间格式都生效,比如PT1M30S(1分30秒)解析后转总秒数会得到90,无需额外适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 00:54:08