我正在通过必发API下注,注意到一些非常奇怪的事情。对于某些事件,市场和事件结果的时间都有所不同。
我的帐户日期和时间设置为欧洲/伦敦。这并不重要,API 无论如何都会输出它想要的任何区域,显然是随机的(有时是格林威治标准时间有时伦敦或任何其他时区,但 ISO 时间戳不包括 +0100 或任何格林威治标准时间偏移量(,尽管我的帐户设置为欧盟/伦敦。
例如,让我们以这个事件为例 苏佩坦/延雪平索德拉 v 瓦尔纳莫
API 输出为:
{"event"=>{"id"=>"28836884",
"name"=>"Jonkopings Sodra v Varnamo", "countryCode"=>"SE",
"timezone"=>"GMT", "openDate"=>"2018-08-13T18:00:00.000Z"
}, "marketCount"=>2}
然而,他们的网站说该活动于格林威治标准时间 17:00/伦敦 18:00(现在的格林威治标准时间+1(开始。
这样的例子数以百计。无法从Betfair支持中获得任何信息,他们需要几天/几周的时间来回复,当他们这样做时,他们只是发送一些罐头消息。
以前有人见过这个问题吗?或者也许我错过了什么?
后来编辑:我不得不转储他们所有的市场数据才能得出这个结论:当他们的 API 说时区是 GMT 时,事件实际上是在伦敦,所以现在 GMT+1,而对于其他所有时区(欧盟/伦敦、珀斯、美国......(,时间实际上是格林威治标准时间。不知道这是怎么回事。仍在调查中。
必发返回的所有时间都是UTC格式 - 这就是API的工作方式。它们还提供可能正确也可能不正确的时区。使用时区作为事件的本地时间的指示。但是,时区非常"命中和错过",所以不要依赖它们是正确的。事实上,随着时间的推移,您会注意到必发市场上非定价信息的大量"数据错误"。事情就是这样。所以不要指望他们会修复错误
Event.openDate
被记录为">事件的预定开始日期和时间。默认情况下,这是欧洲/伦敦(GMT("而Event.timezone
被定义为">事件发生的时区"。
因此,从某种意义上说,API 输出中的openDate
是正确的,因为它显示 18:00。但是,这是不正确的,因为它包含祖鲁语"Z"后缀,表示GMT/UTC。在timezone
字段中包含"GMT":a(是错误的;和 b( 只是为了混淆事情,恕我直言。
相反,我开始使用MarketCatalogue.marketStartTime
定义为">这个市场开始的时间......",这与openDate
并不完全相同,但是,如果它们会有所不同,通常在必发上,你更感兴趣的是市场何时进入比赛,而不是实际比赛/比赛/游戏开始时。
我用来验证此方法的事件似乎以这种方式更好地工作。请记住,英国从 10 月 27 日的 BST 移至 10 月 28 日的 GMT,从 API 我收到这些MarketCatalogue.marketStartTime
:
利物浦vs卡迪夫:"2018-10-27 T 14:00:00.000Z"[正确:格林威治标准时间14:00是英国夏令时15:00]
F1墨西哥大奖赛[排位赛]:"2018-10-27 T18:00:00.000Z"[正确:18:00 BST为19:00 GMT]
伯恩利vs切尔西:"2018-10-28 T 13:30:00.000Z" [正确:格林威治标准时间13:30为格林威治标准时间13:30]