我正在通过api制作一个汽车搜索网站。我告诉你搜索是如何进行的。首先,我使用api获得国家名称,在选择一个国家后,我得到城市名称,然后我得到取车地点名称,汽车将从那里接你。现在,我使用pickup-location_id发送一个请求,以获取具有有效"pickup-open time response"的响应。意思是说,在什么时候,汽车是开放的。
我陷入了这一点。因为,它们以24位二进制格式返回一个值。我想知道如何从二进制数据中得到确切的时间。他们在文件中写了一些说明,但这对我没有帮助
文件上写着---->>>
这是请求--->
< PickUpOpenTimeRS>
element PickupOpenTimeRS
diagram <PickUpOpenTimeRS>
<OpenTime/>
</PickUpOpenTimeRS>
OpenTime二进制数组,包含指定日期指定位置的开放时间数组。
注:OpenTime元素将始终包含24个字符长的#PCDATA文本数据。每个字符代表一个二进制数字,指定该位置是否在指定日期的特定时间打开。
示例:这是响应->
<PickUpOpenTimeRS>
<OpenTime>000000001111101111111000</OpenTime>
</PickUpopenTimeRS>
示例注释:示例响应显示指定的位置为:00:00至07:59之间关闭开放时间:08:00至12:5913:00至13:59之间关闭开放时间:14:00至20:59关闭时间:21:00至23:59
我的问题是,我们是如何从这样一个二进制数字中知道开启时间、关闭时间的?
这很容易,将数组视为类似的字符串
$binary = "000000001111101111111000";
然后数字的位置代表一天中的24小时,所以如果你想检查它是否在早上8点打开。
if ($binary[8] == "1") //is open at 8am.
因此,有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 AM是数字0,1 PM是数字13,等等
如果你想第一次打开它,我会这样做:
$binary = "000000001111101111111000";
$openingHour = strpos($binary, '1');
echo $openingHour; // result: 8
要想在最后一个小时结束,你可以做:
$binary = "000000001111101111111000";
$closingHour = strrpos($binary, '1') + 1;
echo $closingHour; // result: 20