[转帖]Linux Shell:date日期时间操作
https://www.jianshu.com/p/cc9ebb212a8e
整理Linux Shell脚本中常用的日期操作,给予date命令,主要用法总结
- 获得当前日期,时间戳,
date,date '+%s' - 日期解析(字符串转日期,时间戳转日期)
date -d - 日期格式化输出,
date '+%' - 提取日期元素,
date '+%' - 日期加减计算(求指定间隔的新日期,求两日期之差),
date -d - 比较日期大小,
字符串大小 - 计算耗时,
data '+%s'
获得当前日期,时间戳
直接使用date命令就可以得到当前时间日期,输出格式是CST格式
date
2021年 08月 17日 星期二 22:34:35 CST
获得当前日期的正常格式,比如时间日期型%Y-%m-%d $H:%M:%S,或者日期型%Y-%m-%d,%Y%m%d,使用+日期格式实现格式化,date后面必须要有至少一个空格,如果日期格式存在空格需要用引号包起来
date '+%Y-%m-%d %H:%M:%S'
2021-08-17 22:49:57
date '+%Y-%m-%d'
2021-08-17
date '+%Y%m%d'
20210817
date +%Y%m%d
20210817
获得当前时间戳,使用+%s即可获得10位时间戳
date +%s
1629211600
日期解析(字符串转日期,时间戳转日期)
日期解析使用data -d命令,可以解析指定的字符串日期为CST格式时间
date -d '2021-06-18 13:13:13'
2021年 06月 18日 星期五 13:13:13 CST
date -d '2021-06-18'
2021年 06月 18日 星期五 00:00:00 CST
date -d '20210618'
2021年 06月 18日 星期五 00:00:00 CST
date -d接受字符串描述,可以使用以下格式语句将10位时间戳转化为日期格式
date -d @1629535772
2021年 08月 21日 星期六 16:49:32 CST
进一步将时间戳转化为指定格式日期
date -d @1629535772 '+%Y-%m-%d %H:%M:%S'
2021-08-21 16:49:32
# 日期型转年月
date -d '2021-05-18' '+%Y-%m'
2021-05
# 日期型转时间日期型
date -d '2021-05-18' '+%Y-%m-%d %H:%M:%S'
2021-05-18 00:00:00
日期格式化输出
日期格式化输出使用类似于' +%Y-%m-%d'的格式
# 将时间日期型转化为日期型
date -d '2021-05-18 13:12:19' '+%Y-%m-%d'
2021-05-18
提取日期元素
提取年,月,日,时,分,秒
date +%Y # 2021
date +%m # 08
date +%d # 21
date +%H # 17
date +%M # 16
date +%S # 07
# 提取指定时间的年
date -d '2018-05-13' '+%Y' # 2018
日期加减计算
(1)求日期间隔下的新日期
以当下时间为基准,可以使用字符串描述求明天,昨天,几小时,几天之前的日期
date -d 'yesterday'
2021年 08月 20日 星期五 17:24:14 CST
date -d 'tomorrow'
2021年 08月 22日 星期日 17:24:54 CST
date -d 'next day'
2021年 08月 22日 星期日 17:24:54 CST
date -d '2 days ago'
2021年 08月 19日 星期四 17:24:24 CST
date -d '1 hour ago'
2021年 08月 21日 星期六 16:24:33 CST
也可以对指定的日期进行间隔计算
# 求指定日期的之前1个小时
date -d '2021-03-03 11:11:11 1 hour ago'
2021年 03月 03日 星期三 10:11:11 CST
# 求指定日期之前1天的时间
date -d '2021-01-01 -1day'
# 求指定日期之后1天的时间
date -d '2021-01-01 +1day'
2021年 01月 02日 星期六 00:00:00 CST
# 求指定日期之前1分钟
date -d '2021-01-01 1 minute ago'
2020年 12月 31日 星期四 23:59:00 CST
(2)求两个日期之间的差
先转化为时间戳,求间隔的秒数,然后再求对应的时分天
# 求几个几天
t1='2021-03-12'
t2='2021-03-18'
diff=$(((`date -d "$t2" '+%s'` - `date -d "$t1" '+%s'`) / 86400))
echo $diff # 6
比较日期大小
日期比较大小直接使用字符串形式比较,比较符是>,<,=,使用双中括号进行比较,如果是单中括号对于>需要转义\>
[[ '2021-01-01' > '2021-12-26' ]] && echo 1 || echo 0
0
[[ '2021-01-01' > '2020-12-26' ]] && echo 1 || echo 0
1
计算耗时
耗时使用时间戳秒格式进行相减即可
#!/bin/bash
t1=`date '+%s'`
sleep 3
t2=`date '+%s'`
echo $((t2 - t1)) # 输出3
[转帖]Linux Shell:date日期时间操作的更多相关文章
- 【Linux基础】Linux命令date 日期时间
1.显示到纳秒 date +%F.%H:%M:%S.%N --:38.740127086 date +%Y-%m-%d.%H:%M:%S.%N2019-04-25.00:28:24.060756673 ...
- Linux命令date日期时间和Unix时间戳互转
A.将日期转换为Unix时间戳将当前时间以Unix时间戳表示: date +%s 输出如下: 1361542433 转换指定日期为Unix时间戳: date -d '2013-2-22 22:14' ...
- Linux运维知识之linux shell date 用当天时间做备份文件名
本文主要向大家介绍了Linux运维知识之linux shell date 用当天时间做备份文件名,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助. #!/bin/bash #dat ...
- paip.日期时间操作以及时间戳uapi php java python 总结
paip.日期时间操作以及时间戳uapi php java python 总结 ///uapi Date 函数 | Day 函数 | Hour 函数 | Minute 函数 | Month 函数 | ...
- Firebird日期时间操作
最近在使用Firebird数据做 一项目,使用FireBird边用边学.(以下转贴) 查询2007年度以后的,12月份以上的数据记录,datetime为timestamp字段 select * fro ...
- Python基础 | 日期时间操作
目录 获取时间 时间映射 格式转换 字符串转日期 日期转字符串 unixtime 时间计算 时间偏移 时间差 "日期时间数据"作为三大基础数据类型之一,在数据分析中会经常遇到. 本 ...
- Java日期时间操作基础——包含JDK1.8时间操作新特性
JDK1.7日期时间操作 示例小结 public class DateTest { public static final String FORMAT_DATE = "yyyy-MM-dd& ...
- 在Jquery里格式化Date日期时间数据
在Jquery里格式化Date日期时间数据: $(function(){ //当前时间格式化yyyy-MM-dd HH:mm:ss alert(timeStamp2String(new Date(). ...
- linux在shell date获取时间的相关操作
获得当天的日期 date +%Y-%m-%d 输出: 2011-07-28 将当前日期赋值给DATE变量DATE=$(date +%Y%m%d) 有时候我们需要使用今天之前或者往后的日期,这时可以使用 ...
- linux shell date 用当天时间做备份文件名
#!/bin/bash #date 显示时间,我们可以用时间的不同做为备份文件的名字,这样以前的备份就不会被覆盖 datename=$(date +%Y%m%d-%H%M%S) ...
随机推荐
- Spring表达式语言(SPEL)学习(03)
rootObject 在表达式中直接写name和getName(),这时候Expression是无法解析的,因为其不知道name和getName()对应什么意思 @Test public void t ...
- 自签证书https
1.下载编译好的openssl. http://slproweb.com/products/Win32OpenSSL.html 下载完成后运行安装: 记住你安装到的目录,等下打开这个文件夹(小贴士:最 ...
- 号外!5G+X联创营华为云官网上线,5G 创业春天来了!
摘要:为助力互联网行业客户与伙伴实现降本增效.抓住新趋势,华为云发起"5G+X"联创营计划. 会议室里,产品经理和程序员们唇枪舌战,陷入激烈得讨(zheng)论(chao). 产品 ...
- HTTP请求转发那些事:你可能不知道的Hop-by-hop Headers和End-to-end Headers
摘要:不是所有的web容器都能帮助开发者屏蔽hop-by-hop headers,有些容器反而允许开发者自定义hop-by-hop headers来实现更大程度的灵活性. 本文分享自华为云社区< ...
- gitblit 不使用远程头像的方法
gitblit 安装非常简单,使用也很方便,由于我初次使用,遇到一个小问题,头像加载不出来,很影响系统的速度,网上找了很久,终于找到了解决办法. 1.仓库分组:创建仓库设定名称时录入:groupNam ...
- Mvc管道模型和处理请求的流程
管道事件 ASP.NET MVC请求到响应的基本流程 原文链接:https://blog.csdn.net/qq_37112587/article/details/112340916
- 从飞书妙记秒开率提升,看火山引擎A/B测试在研发场景的应用
作者:DataTester 用户体验是决定互联网产品能否长久生存的关键,每一个基于产品功能.使用和外观的微小体验,都将极大地影响用户留存和满意度. 对于企业协作平台飞书而言,用户体验旅程从打开 ...
- Kubernetes(K8S) Controller - Deployment 介绍
什么是controller 实际存在的,管理和运行容器的对象 Pod 和 Controller 关系 Pod 是通过 Controller 实现应用的运维,比如伸缩.滚动升级等等 Pod 和 Cont ...
- Buffer 缓冲区操作
1.缓冲区分片在 NIO 中,除了可以分配或者包装一个缓冲区对象外,还可以根据现有的缓冲区对象来创建一个子缓冲区,即在现有缓冲区上切出一片来作为一个新的缓冲区,但现有的缓冲区与创建的子缓冲区在底层数组 ...
- 轻松导航:教你在Excel中添加超链接功能
前言 超链接是指在网页或电子文档中常见的元素,它的主要作用是将一个文本或图像与另一网页.文件或资源链接起来,从而使用户能够通过点击该链接跳转到目标资源.超链接可以起到导航以及引用的作用.超链接通常有以 ...