php - PHP获得最接近给定时间数组的时间
问题描述
$timeslots
我有一个使用时隙调用的数组,例如:
array:32 [▼
0 => "2018-12-15T12:00:00.0000000"
1 => "2018-12-15T12:15:00.0000000"
2 => "2018-12-15T12:30:00.0000000"
3 => "2018-12-15T12:45:00.0000000"
4 => "2018-12-15T13:00:00.0000000"
5 => "2018-12-15T13:15:00.0000000"
6 => "2018-12-15T13:45:00.0000000"
7 => "2018-12-15T14:15:00.0000000"
8 => "2018-12-15T14:30:00.0000000"
9 => "2018-12-15T14:45:00.0000000"
10 => "2018-12-15T15:00:00.0000000"
11 => "2018-12-15T15:15:00.0000000"
12 => "2018-12-15T15:30:00.0000000"
13 => "2018-12-15T15:45:00.0000000"
14 => "2018-12-15T16:15:00.0000000"
15 => "2018-12-15T16:45:00.0000000"
16 => "2018-12-15T17:00:00.0000000"
17 => "2018-12-15T17:30:00.0000000"
18 => "2018-12-15T17:45:00.0000000"
19 => "2018-12-15T18:30:00.0000000"
20 => "2018-12-15T18:45:00.0000000"
21 => "2018-12-15T19:15:00.0000000"
22 => "2018-12-15T19:45:00.0000000"
23 => "2018-12-15T20:15:00.0000000"
24 => "2018-12-15T20:45:00.0000000"
25 => "2018-12-15T21:00:00.0000000"
26 => "2018-12-15T21:15:00.0000000"
27 => "2018-12-15T21:30:00.0000000"
28 => "2018-12-15T21:45:00.0000000"
29 => "2018-12-15T22:00:00.0000000"
30 => "2018-12-15T22:15:00.0000000"
31 => "2018-12-15T22:30:00.0000000"
]
另外,我有一个变量,例如:
$expected_time = 2018-12-15T18:00:00.0000000; // this can be different value, so its not unique value
$expected_time 永远不会进入数组$timeslots
,但我需要找到最接近 $expected_time 的值...我该怎么做?
如何从数组中获取最接近的时隙值$timeslots
并$expected_time
计算以分钟为单位的差异?
任何的想法?
解决方案
正如 Nico 在评论中提到的那样,它非常简单。只是循环和计算时间差。
$timeslots = [...];
$expected_time = "2018-12-15T18:00:00.0000000";
$timestamp = strtotime($expected_time);
$diff = null;
$index = null;
foreach ($timeslots as $key => $time) {
$currDiff = abs($timestamp - strtotime($time));
if (is_null($diff) || $currDiff < $diff) {
$index = $key;
$diff = $currDiff;
}
}
echo $timeslots[$index];
推荐阅读
- java - 是否可以通过 Java 中的 Telegram API 发送邮件(不是机器人)
- vb.net - 尝试使用 Blue Prism 对 HTTP 请求令牌进行 API 时出现错误“字典中不存在给定的密钥”
- python - 如何在期望脚本中读取发送命令输出
- loops - 我如何优化ansible的剧本
- prestashop - 如何在 smarty 中将点转换为逗号
- php - 当您在本地开发 Magento 时,请求需要多长时间?
- c++ - 在 CurrentProject 中使用 ExternalProject 的目标
- android - 如何根据设备方向动态更改 LinearLayout 方向
- pdf - 是否有任何解决方案可以自动修复 PDF 以符合可访问性要求?
- gitlab - 使用提交自动将标签添加到 GitLab 问题