我使用QuickBooks Web Connector在使用QBXML请求的Windows 8.1计算机上从QuickBooks Desktop中提取员工记录。 TimeModified时间戳是否有原因返回一个不考虑夏令时的偏移量?有没有办法在主机系统上获得当前时间?
目前正在回归" 2014-03-27T14:20:53-05:00"对于TimeModified,即使当前时区设置为东部时间,并且"调整为夏令时"启用。偏移量应为-04:00。
QBXML请求:
<?xml version="1.0" encoding="utf-8"?>
<?qbxml version="12.0"?>
<QBXML>
<QBXMLMsgsRq onError="stopOnError">
<EmployeeQueryRq metaData="MetaDataAndResponseData">
<OwnerID>0</OwnerID>
</EmployeeQueryRq>
</QBXMLMsgsRq>
</QBXML>
答案 0 :(得分:2)
根据IPP社区的主持人的说法,这是一个错误。很遗憾,我们无法跟踪它。
“QBWG-18389 - DST未在TimeCreated和TimeModified字段中正确显示......我们无法在外部跟踪这些内容。”
Incorrect TimeModified Offset - Intuit Partner Platform Community
答案 1 :(得分:1)
我制作了一个c#库来处理这种情况。它是开源的。
https://github.com/jsgoupil/quickbooks-sync
长时间修复此错误后,我们提出了此解决方案
QuickBooks无法正确处理夏令时(DST)。该库中的DATETIMETYPE类已意识到此问题,并将通过删除常见用例中的偏移量值来纠正来自QuickBooks的时间戳。
在内部,QuickBooks在DST期间返回错误的日期时间偏移。因此,QuickBooks希望您在安装QuickBooks的计算机时区中以相同的不正确的偏移量发送日期时间,或者发送不带偏移量的日期时间。
答案 2 :(得分:0)
即使在QB 2019中我也已验证了此错误:(
虽然不是最佳选择,但有一个简单的解决方法:
检查时间是否在将来。如果是,则减去一小时。
//Pseudocode
if (timeModified.after(now())
return timeModified.minus(oneHour)
else
return timeModified
如果该错误已修复,则此更改仍然有效。