Linux时间取整技巧

简介: Linux时间取整技巧
发现问题

在学习前辈们代码的适合,发现了一段奇怪的代码于是研究了一下。
if [ "$VER" == "" ]; then

获得一天前的时间精确到秒

export ONE_DAY_AGO=$(date '+%Y-%m-%d %H:%M:%S' --date '1 days ago')

获得秒数再取整,这里就很奇怪了

export VER_UNIX_TS=$(expr `date -d "${ONE_DAY_AGO}" +%s` / 60 / 5 * 60 * 5 )

根据秒数计算一个新的时间

export VER=$(date +%Y%m%d%H%M -d "1970-01-01 UTC-8 $VER_UNIX_TS sec" -u)
fi
思考验证

仔细思考了一下,才意识到这是一种时间的取整技巧,可以获得当前时间最近的一个5min整数倍的时间节点。比如0:00、1:05、2:10、3:15这些时间点。
我用docker创建了一个容器来做测试,有linux机器的可以忽略
docker pull centos
docker run -it centos /bin/bash
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime -R修改系统时区

编写一个time_round.sh的shell脚本

!/bin/bash

export VER_UNIX_TS=$(expr `date -d "${1}" +%s` / 60 / 5 * 60 * 5 )
export VER=$(date '+%Y-%m-%d %H:%M' -d "1970-01-01 UTC-8 $VER_UNIX_TS sec" -u)
echo $VER
随便测试了一些时间,结果跟预期的一样,得到的时间分钟都是5min的倍数。
图片.png
推广

回到之前那段奇怪的操作秒数 / 60 / 5 * 60 * 5, 其实秒数/60就化为分钟数了,再/ 5对应的当然就是按5min的倍数来取整。

那么15min就可以变为 秒数 / 60 / 15 \* 60 \* 15
如果是毫秒数的话再/1000和\* 1000就可以
再多一对/ 60和\* 60同样也可以推广到小时
总之,觉得比较有用就记录了一下。
相关实践学习
CentOS 7迁移Anolis OS 7
龙蜥操作系统Anolis OS的体验。Anolis OS 7生态上和依赖管理上保持跟CentOS 7.x兼容,一键式迁移脚本centos2anolis.py。本文为您介绍如何通过AOMS迁移工具实现CentOS 7.x到Anolis OS 7的迁移。
相关文章
|
Linux
如何查找 Linux 操作系统的安装日期和时间?
如何查找 Linux 操作系统的安装日期和时间?
4948 1
如何查找 Linux 操作系统的安装日期和时间?
|
3月前
|
Linux
在Linux中,如何查看当前日期和时间?
在Linux中,如何查看当前日期和时间?
|
Linux
LINUX获得毫秒时间戳的代码
LINUX获得毫秒时间戳的代码
81 0
|
Ubuntu Unix Linux
Linux-(在写CPU的过程中遇到的)
Linux-(在写CPU的过程中遇到的)
105 0
|
Shell Linux
linux shell 时间运算以及时间差计算方法
linux shell 时间运算以及时间差计算方法
1136 0
|
Linux
Linux如何查找某个时间点后生成的空文件
今天遇到一个特殊需求,需要找到某天(例如2017-04-13)以及这之后生成的空文件。那么这个要怎么处理呢?这个当然是用find命令来解决。如下所示, -mtime -5 表示查找距现在 5*24H 内修改过的文件 -type f -empty 表示空文件 由于需要以显示修改时间等文件信息,所以使用-exec ls -lt {}\; 具体命令如下所示: $ find .
1093 0

热门文章

最新文章

下一篇
无影云桌面