如何将一段时间均分为四段

刚才不知道为什么突然就想起来去年面试一家公司的时候一道没答上来的面试题的解法。

当时面试官问我:一段时间,就假如是12:30:54到14:50:36,写一个shell脚本,将这段时间均匀的分为四段。我因为在面试的时候面试官问了我很多问题都没答上来,确实状态已经不是很好了,当时没有思路,后来忙其他事去了,就把这个抛在一边,于是就给忘了。今天突然想起这道没解出来的题的做法。
思路是这样的:先将开始时间和结束时间转换为便于计算的时间戳,然后求出均分后每小段时间范围,从而得出每小段时间端点的时间戳,再将时间戳转换为标准时间格式即可
脚本如下:

#!/bin/bash

# 开始时间和结束时间,前面的日期随便写
start_time=`date -d "2021-04-27 12:30:54" +%s`
end_time=`date -d "2021-04-27 14:50:36" +%s`

# 求出每小段时间的范围
time_range=$(expr `expr $end_time - $start_time` / 4)

# 求出端点的时间戳
time_two_stamp=`expr $start_time + $time_range`
time_three_stamp=$(expr $start_time + `expr $end_range \* 2`)
time_four_stamp=`expr $end_time - $time_range`

# 将时间戳转换日期格式
time_two=`date -d @$time_two_stamp "+%H:%M:%S"`
time_three=`date -d @$time_three_stamp "+%H:%M:%S"`
time_four=`date -d @$time_four_stamp "+%H:%M:%S"`

echo "将12:30:54-14:50:36均分为4段"
echo "第一段为12:30:54-${time_two}"
echo "第二段为${time_two}-${time_three}"
echo "第三段为${time_three}-${time_four}"
echo "第四段为${time_four}-14:50:36"

执行结果

posted @ 2021-04-27 11:44  Charramma  阅读(333)  评论(0编辑  收藏  举报