6

我正在使用 QuickBooks Web 连接器使用 QBXML 请求从 Windows 8.1 机器上的 QuickBooks Desktop 中提取员工记录。TimeModified 时间戳返回不考虑夏令时的偏移量是否有原因?有没有办法在主机系统上获取当前时间?

它目前正在为 TimeModified 返回“2014-03-27T14:20:53-05:00”,即使当前时区设置为东部时间并启用了“调整夏令时”。偏移量应为 -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>
4

3 回答 3

3

根据 IPP 社区的一位版主,这是一个错误。不幸的是,我们无法追踪它。

“QBWG-18389 - DST 在 TimeCreated 和 TimeModified 字段中显示不正确......我们没有办法在外部跟踪这些。”

不正确的 TimeModified Offset - Intuit 合作伙伴平台社区 (编辑:Aaaa,它已经消失了。这现在是一个死链接,也许可以追踪问题?)

于 2014-04-15T14:11:14.433 回答
1

我制作了 ac# 库来处理这种情况。它是开源的。

https://github.com/jsgoupil/quickbooks-sync

经过长时间修复这个错误,我们想出了这个解决方案

QuickBooks 无法正确处理夏令时 (DST)。此库中的 DATETIMETYPE 类已意识到此问题,并将通过删除常见用例中的偏移值来更正来自 QuickBooks 的时间戳。

在内部,QuickBooks 在 DST 期间返回不正确的日期时间偏移。因此,QuickBooks 希望您在安装 QuickBooks 的计算机时区中发送具有相同错误偏移量的日期时间或不带偏移量的日期时间。

于 2020-04-08T05:50:25.390 回答
0

即使在 QB 2019 中,我也已经验证了这个错误 :(

虽然不是最佳的,但有一个简单的解决方法:

检查时间是否在未来。如果是,则减去一小时。

//Pseudocode
if (timeModified.after(now())
  return timeModified.minus(oneHour)
else
  return timeModified

如果错误得到修复,此更改仍然有效。

于 2019-04-26T20:07:46.803 回答