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

QB Time Tracking WebService时长XML节点转换结果不符预期技术问询

QuickBooks XML时长解析异常:PT0H14M0S被解析为0的问题排查与解决

看起来你在给QuickBooks传时长数据时踩了个格式的坑——明明传了PT0H14M0S(对应14分钟),结果QB却显示0,和你预期的0.14(这里我猜你可能混淆了分钟数与小时小数的转换逻辑?14分钟实际对应≈0.233小时,0.14小时其实是8.4分钟)不符。我来帮你拆解下问题和解决办法:

核心问题:QuickBooks对Duration字段的格式要求

你用的是ISO 8601标准的时长格式PT0H14M0S,但QuickBooks的QBXML接口在处理TimeTracking类请求时,并不是所有版本都支持这种格式。大部分场景下,它期望的是直接传入小数形式的小时数,而非ISO时长字符串。这就是你的PT0H14M0S被解析成0的原因——QB无法识别该格式,直接默认赋值为0了。

解决办法分这几步:

1. 直接传递小数小时数(最稳妥方案)

把你要传递的分钟数转换成对应的小时小数,比如14分钟就是14 / 60 ≈ 0.2333,然后将这个值赋值给Duration节点:

XmlElement duration2 = inputXmlDoc.CreateElement("Duration");
timeTrackingAdd2.AppendChild(duration2);
// 14分钟转成小时小数,保留4位精度
duration2.InnerText = (14.0 / 60).ToString("0.0000");

这样QB就能正确识别并显示对应的时长。如果你的预期0.14是真的要传递0.14小时(约8分钟),直接传0.14即可。

2. 确认QBXML版本是否支持ISO时长格式

如果你坚持想用ISO 8601格式,需要先核对你使用的QBXML版本文档。比如QBXML v13.0及以后的部分版本可能开始支持ISO时长,但旧版本(如v10.0之前)完全不支持。若版本确实支持,排查下格式写法是否严格匹配(比如PT必须大写、无多余空格)。

3. 检查TimeTrackingAdd请求的完整性

如果请求中缺少TxnDate、EntityRef、ItemRef等必填字段,QB可能会忽略Duration字段,导致显示异常。建议对照QBXML参考手册,确认请求结构是否完整。

补充:关于你预期的0.14

这里提一句,14分钟对应的小时小数是≈0.233,而0.14小时等于8.4分钟。如果你确实想得到0.14的显示结果,应该传递的是8.4分钟对应的时长,而非14分钟。可能这里你混淆了分钟数与小时小数的转换逻辑,需要先明确实际需求哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:48:21