如何知道RentalCarsAPI在返回24位二进制格式的响应时的接送停机时间


how to know RentalCars api pickup and dropdowntime as it returns the response in 24 bit binary format

我正在通过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