Betfair API 有时会关闭输出时区

Betfair API output time zone off sometimes

我正在通过 Betfair 下注 API 并注意到一些非常奇怪的事情。对于某些事件,市场和事件结果的时间都是关闭的。

我的帐户日期和时间设置为 Europe/London。没关系,API 输出它想要的任何区域,显然是随机的(有时是格林威治标准时间,有时是伦敦或其他任何时区,但 ISO 时间戳不包括 +0100 或任何格林威治标准时间偏移量),尽管如此我的帐户设置为 EU/London.

例如让我们以 Superettan / Jonkopings Sodra v Varnamo 为例

API 输出为:

{"event"=>{"id"=>"28836884", 
"name"=>"Jonkopings Sodra v Varnamo", "countryCode"=>"SE", 
"timezone"=>"GMT", "openDate"=>"2018-08-13T18:00:00.000Z"
}, "marketCount"=>2}

但是他们的网站说活动开始于 17:00 GMT / 18:00 London(现在 GMT+1)。

有数百个这样的例子。无法从 Betfair 支持中得到任何东西,他们需要 days/weeks 回复,当他们回复时,他们只是发送一些固定消息。

有人见过这个问题吗?或许我遗漏了什么?

稍后编辑:我不得不转储他们所有的市场数据才能得出这个结论:看来当他们的API说时区是格林威治标准时间时,事件实际上是在伦敦,现在是 GMT+1,对于其他所有时区(Eu/London、珀斯、美国...),时间实际上是 GMT。不知道这是怎么回事。仍在调查中。

Event.openDate 记录为“事件的预定开始日期和时间。默认情况下为 Europe/London(格林威治标准时间)”,而 Event.timezone 定义为“[事件发生的]时区。

因此,从某种意义上说,API 输出中的 openDate 是正确的,因为它表示 18:00。但是,它是不正确的,因为它包含指示 GMT/UTC 的 Zulu 'Z' 后缀。在 timezone 字段中包含 'GMT': a) 是错误的; b) 只是用来混淆问题,恕我直言。

相反,我开始使用 MarketCatalogue.marketStartTime,它被定义为“该市场开始于... 的时间”,这并不完全相同openDate 但是,如果它们会有所不同,通常在 Betfair 上,与实际比赛/比赛/游戏开始时相比,您更感兴趣的是市场何时开始。

我用来验证此方法的事件似乎以这种方式工作得更好。请记住,英国从 10 月 27 日的 BST 移至 10 月 28 日的 GMT,从 API 我收到这些 MarketCatalogue.marketStartTime:

Liverpool v Cardiff: "2018-10-27T14:00:00.000Z" [Correct: 14:00 GMT is 15:00 BST]

F1 Mexico Grand Prix [qualifying]: "2018-10-27T18:00:00.000Z" [Correct: 18:00 BST is 19:00 GMT]

Burnley v Chelsea: "2018-10-28T13:30:00.000Z" [Correct: 13:30 GMT is 13:30 GMT]

Betfair 返回的所有时间均为 UTC - API 就是这样工作的。他们还提供可能正确也可能不正确的时区。使用时区作为事件本地时间的指示。但是,时区非常 "hit and miss",所以不要依赖它们是正确的。事实上,随着时间的推移,您会注意到 Betfair 市场上有很多 "data errors" 非定价信息。这就是它的发展方式。所以不要指望他们会修复错误