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日期时间操作的更多相关文章

  1. 【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 ...

  2. Linux命令date日期时间和Unix时间戳互转

    A.将日期转换为Unix时间戳将当前时间以Unix时间戳表示: date +%s 输出如下: 1361542433 转换指定日期为Unix时间戳: date -d '2013-2-22 22:14' ...

  3. Linux运维知识之linux shell date 用当天时间做备份文件名

    本文主要向大家介绍了Linux运维知识之linux shell date 用当天时间做备份文件名,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助. #!/bin/bash #dat ...

  4. paip.日期时间操作以及时间戳uapi php java python 总结

    paip.日期时间操作以及时间戳uapi php java python 总结 ///uapi Date 函数 | Day 函数 | Hour 函数 | Minute 函数 | Month 函数 | ...

  5. Firebird日期时间操作

    最近在使用Firebird数据做 一项目,使用FireBird边用边学.(以下转贴) 查询2007年度以后的,12月份以上的数据记录,datetime为timestamp字段 select * fro ...

  6. Python基础 | 日期时间操作

    目录 获取时间 时间映射 格式转换 字符串转日期 日期转字符串 unixtime 时间计算 时间偏移 时间差 "日期时间数据"作为三大基础数据类型之一,在数据分析中会经常遇到. 本 ...

  7. Java日期时间操作基础——包含JDK1.8时间操作新特性

    JDK1.7日期时间操作 示例小结 public class DateTest { public static final String FORMAT_DATE = "yyyy-MM-dd& ...

  8. 在Jquery里格式化Date日期时间数据

    在Jquery里格式化Date日期时间数据: $(function(){ //当前时间格式化yyyy-MM-dd HH:mm:ss alert(timeStamp2String(new Date(). ...

  9. linux在shell date获取时间的相关操作

    获得当天的日期 date +%Y-%m-%d 输出: 2011-07-28 将当前日期赋值给DATE变量DATE=$(date +%Y%m%d) 有时候我们需要使用今天之前或者往后的日期,这时可以使用 ...

  10. linux shell date 用当天时间做备份文件名

    #!/bin/bash #date  显示时间,我们可以用时间的不同做为备份文件的名字,这样以前的备份就不会被覆盖 datename=$(date +%Y%m%d-%H%M%S)           ...

随机推荐

  1. Java 创建/编辑/删除Excel迷你图表

    迷你图是Excel工作表单元格中表示数据的微型图表.使用迷你图可以非常直观的显示数据变化趋势,突出最大值.最小值,放在数据表格中可起到很好的数据分析效果.本文将通过Java代码示例介绍如何在Excel ...

  2. 华为云发布CodeArts Inspector漏洞管理服务,守护产品研发安全

    本文分享自华为云社区<华为云发布CodeArts Inspector漏洞管理服务,守护产品研发安全>,作者: 华为云头条. 2023年9月7日,华为云正式发布CodeArts Inspec ...

  3. 实战案例丨GaussDB for DWS如何识别坏味道的SQL

    摘要:SQL中的坏味道,你知道吗? SQL语言是关系型数据库(RDB)的标准语言,其作用是将使用者的意图翻译成数据库能够理解的语言来执行.人类之间进行交流时,同样的意思用不同的措辞会产生不同的效果. ...

  4. 华为云PB级数据库GaussDB(for Redis)揭秘第九期:与HBase的对比

    摘要: 高斯Redis,兼具开源Redis和HBase各自优点,提供成本更低.性能更好.灵活性更强的数据库服务! 本文分享自华为云社区<华为云PB级数据库GaussDB(for Redis)揭秘 ...

  5. SparkSQL高并发:读取存储数据库

    摘要:实践解析如何利用SarkSQL高并发进行读取数据库和存储数据到数据库. 本文分享自华为云社区<SarkSQL高并发读取数据库和存储数据到数据库>,作者:Copy工程师 . 1. Sp ...

  6. PNG文件解读(1):PNG/APNG格式的前世今生

    PNG格式的前世今生 png是一种无损压缩的位图片形格式,其设计目的是试图替代GIF和TIFF文件格式,同时增加一些GIF文件格式所不具备的特性.PNG使用从LZ77派生的无损数据压缩算法--LZW专 ...

  7. Vue 应用程序性能优化:代码压缩、加密和混淆配置详解

    ​ 简介在 Vue 应用程序的开发中,代码压缩.加密和混淆是优化应用程序性能和提高安全性的重要步骤. Vue CLI 是一个功能强大的开发工具,它提供了方便的配置选项来实现这些功能.本文将介绍如何使用 ...

  8. Solon2 开发之插件,四、插件热插拔管理机制(H-Spi)

    插件热插拔管理机制,简称:H-Spi.是框架提供的生产时用的另一种高级扩展方案.相对E-Spi,H-Spi 更侧重隔离.热插热拔.及管理性. 应用时,是以一个业务模块为单位进行开发,且封装为一个独立插 ...

  9. windows使用rclone挂载alist为本地磁盘,设置开机自启

    前言 实现在windows下将alist挂载为本地磁盘,并设置开机自启,使得重启后依然生效. 教程 下载软件 Rclone: Rclone downloads WinFsp: https://winf ...

  10. xv6book阅读 chapter2

    一个操作系统至少应该满足三个需求:多路复用.隔离.交互.本章主要介绍如何组织操作系统来实现以上的三个需求,本文关注的是一种围绕单核进行设计的方法,这种设计是被许多uinx操作系统所使用的.Xv6运行在 ...