2

我正在通过 api 创建一个汽车搜索网站。我告诉你搜索是如何进行的。首先,我使用 api 获取国家/地区名称,选择一个国家后,我获取城市名称,然后获取取车地点名称,汽车将从那里接您。现在使用提货 location_id,我正在发送请求以获取具有有效“提货开放时间响应”的响应。意思是在什么时候,车子可以上车了。

我被困在这一点上。因为,它们返回一个 24 位二进制格式的值。我想知道如何从二进制数据中获取确切的时间。他们在文档中写了一些说明,但这对我没有帮助。

文档说---->>>

这是请求--->

< PickUpOpenTimeRS>
element PickupOpenTimeRS

diagram <PickUpOpenTimeRS>
<OpenTime/>
</PickUpOpenTimeRS>

OpenTime 包含指定日期指定位置的开放时间数组的二进制数组。

注意:OpenTime 元素将始终包含 24 个字符长的#PCDATA 文本数据。每个字符代表一个二进制数字,指定该位置是否在指定日期的特定时间开放。

示例:这是响应->

<PickUpOpenTimeRS>
<OpenTime>000000001111101111111000</OpenTime>
</PickUpopenTimeRS>

示例说明:示例响应显示指定位置为: 00:00 到 07:59 之间关闭 08:00 到 12:59 之间打开 13:00 到 13:59 之间关闭 14:00 到 20:59 之间打开 关闭21:00 至 23:59 之间

我的问题是,我们如何从这样的二进制数字中知道打开时间、关闭时间?

4

2 回答 2

2

这很简单,将数组视为这样的字符串

 $binary = "000000001111101111111000";

然后数字的位置代表一天中的 24 小时,所以如果您想检查它是否在上午 8 点开放。

 if ($binary[8] == "1") //is open at 8am. 
于 2013-06-30T03:38:13.823 回答
2

所以有 24 位数字代表一天中的每个小时,如下所示:

12AM   2AM   4AM   6AM   8AM   10AM  12PM   2PM   4PM   6PM   8PM   10PM  
  | 1AM | 3AM | 5AM | 7AM | 9AM | 11AM | 1PM | 3PM | 5PM | 7PM | 9PM | 11PM 
  V  |  V  |  V  |  V  |  V  |  V  |   V  |  V  |  V  |  V  |  V  |  V  |
  0  0  0  0  0  0  0  0  1  1  1  1   1  0  1  1  1  1  1  1  1  0  0  0

所以上午 12 点是数字 0,下午 1 点是数字 13,依此类推。

如果您想第一次打开它,我会这样做:

$binary = "000000001111101111111000";
$openingHour = strpos($binary, '1');
echo $openingHour; // result: 8

要获得最后的关闭时间,您可以执行以下操作:

$binary = "000000001111101111111000";
$closingHour = strrpos($binary, '1') + 1;
echo $closingHour; // result: 20
于 2013-06-30T03:55:28.500 回答