每天学一点儿shell:linux中时间函数的date的用法
文章目录
- 1、linux中date函数格式
- 2、date日期函数的具体用法
- 2.1、获取相应格式的日期
- 2.2、获取相隔时间段的日期
- 2.2.1、获取今天的日期
- 2.2.2、获取昨天的日期
- 2.2.3、获取明天的日期
- 2.3、获取当前时间戳
- 2.4、将指定时间字符串转成日期格式
- 2.5、获取指定日期前1天的日期
- 2.6、获取指定日期后1天的日期
- 2.7、获取指定日期上1个月的第一天
- 2.8、获取指定日期上1个月的最后一天
1、linux中date函数格式
首先date函数的使用格式如下:
用法:date [选项]... [+格式]或:date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
其中的格式解释所示:
符号 | 解释 |
---|---|
%% | 一个文字的 % |
%a | 当前locale 的星期名缩写(例如: 日,代表星期日) |
%A | 当前locale 的星期名全称 (如:星期日) |
%b | 当前locale 的月名缩写 (如:一,代表一月) |
%B | 当前locale 的月名全称 (如:一月) |
%c | 当前locale 的日期和时间 (如:2005年3月3日 星期四 23:05:25) |
%C | 世纪;比如 %Y,通常为省略当前年份的后两位数字(例如:20) |
%d | 按月计的日期(例如:01) |
%D | 按月计的日期;等于%m/%d/%y |
%e | 按月计的日期,添加空格,等于%_d |
%F | 完整日期格式,等价于 %Y-%m-%d |
%g | ISO-8601 格式年份的最后两位 (参见%G) |
%G | ISO-8601 格式年份 (参见%V),一般只和 %V 结合使用 |
%h | 等于%b |
%H | 小时(00-23) |
%I | 小时(00-12) |
%j | 按年计的日期(001-366) |
%k | hour, space padded ( 0…23); same as %_H |
%l | hour, space padded ( 1…12); same as %_I |
%m | month (01…12) |
%M | minute (00…59) |
%n | 换行 |
%N | 纳秒(000000000-999999999) |
%p | 当前locale 下的"上午"或者"下午",未知时输出为空 |
%P | 与%p 类似,但是输出小写字母 |
%r | 当前locale 下的 12 小时时钟时间 (如:11:11:04 下午) |
%R | 24 小时时间的时和分,等价于 %H:%M |
%s | 自UTC 时间 1970-01-01 00:00:00 以来所经过的秒数 |
%S | 秒(00-60) |
%t | 输出制表符 Tab |
%T | 时间,等于%H:%M:%S |
%u | 星期,1 代表星期一 |
%U | 一年中的第几周,以周日为每星期第一天(00-53) |
%V | ISO-8601 格式规范下的一年中第几周,以周一为每星期第一天(01-53) |
%w | 一星期中的第几日(0-6),0 代表周一 |
%W | 一年中的第几周,以周一为每星期第一天(00-53) |
%x | 当前locale 下的日期描述 (如:12/31/99) |
%X | 当前locale 下的时间描述 (如:23:13:48) |
%y | 年份最后两位数位 (00-99) |
%Y | 年份 |
%Z | 按字母表排序的时区缩写 (例如,EDT) |
2、date日期函数的具体用法
2.1、获取相应格式的日期
输出日期格式为yyyy-MM-dd HH:mm:ss
的时间,以当前日期时间为例:
方式一:
[root@hadoop-master ~]# date -d today +"%Y-%m-%d %T"
2020-09-16 19:45:39
方式二:
[root@hadoop-master ~]# date +"%Y-%m-%d %T"
2020-09-16 19:48:39
方式三:
[root@hadoop-master ~]# date +"%Y-%m-%d %H:%M:%S"
2020-09-16 19:51:42
举个其他数据格式的例子,例如输出格式为yyyMMddHHmmss
格式
[root@hadoop-master ~]# date +"%Y%m%d%H%M%S"
20200916195408
2.2、获取相隔时间段的日期
2.2.1、获取今天的日期
方式一:
[root@hadoop-master ~]# date +%Y%m%d
20200916
方式二:
[root@hadoop-master ~]# date +%F
2020-09-16
方式三:
[root@hadoop-master ~]# echo $(date +%Y%m%d)
20200916
2.2.2、获取昨天的日期
方式一:
[root@hadoop-master ~]# date -d yesterday +%Y%m%d
20200915
方式二:
[root@hadoop-master ~]# date -d -1day +%Y%m%d
20200915
方式三:
[root@hadoop-master ~]# date -d "-1 day" +%Y%m%d
20200915
方式四:
[root@hadoop-master ~]# date +%Y%m%d --date="-1 day"
20200915
方式五:
[root@hadoop-master ~]# date +%Y%m%d --date="1 day ago"
20200915
根据以上的表达式我们推测出17天前的日期为:
[root@hadoop-master ~]# date +%Y%m%d --date=-17day
20200830
同理也可以推理出上一个小时为:
[root@hadoop-master ~]# date +"%Y-%m-%d %H:%M:%S" --date=-1hour
2020-09-16 19:15:00
上一分钟为:
[root@hadoop-master ~]# date +"%Y-%m-%d %H:%M:%S" --date=-1minute
2020-09-16 20:14:34
同理获取上一年,上一月,上一天,上一小时,上一分钟,上一秒,不多扩展了。
2.2.3、获取明天的日期
根据上面的我们很容易推测出明天的日期计算方式:
方式一:
[root@hadoop-master ~]# date +%Y%m%d --date=tomorrow
20200917
方式二:
[root@hadoop-master ~]# date +%Y%m%d --date=+1day
20200917
方式三:
[root@hadoop-master ~]# date +%Y%m%d --date="+1 day"
20200917
同理可以推测出17天后是:
[root@hadoop-master ~]# date +%Y%m%d --date="+17 day"
20201003
2.3、获取当前时间戳
注意一下的是自UTC 时间 1970-01-01 00:00:00 以来所经过的秒数,如果是使用更精确的时间戳则不能使用这个
[root@hadoop-master ~]# date +%s
1600258838
下面是获取当前时间的纳秒数,精确到亿分之一秒,这个是秒后面的值
[root@hadoop-master ~]# date +%N
713781544
获取当前时间的毫秒数
[root@hadoop-master ~]# echo $((`date '+%s'`*1000+`date '+%N'`/1000000))
1600259292777
不过这个有个缺陷会报错:
[root@hadoop-master ~]# echo $((`date '+%s'`*1000+`date '+%N'`/1000000))
-bash: 1600259263*1000+097437620: 数值太大不可为算数进制的基 (错误符号是 "097437620")
2.4、将指定时间字符串转成日期格式
把字符串转成时间戳
[root@hadoop-master ~]# date +%s --date="2020-09-16"
1600185600
把时间戳转成时间
[root@hadoop-master ~]# date -d @1600185600 "+%Y-%m-%d"
2020-09-16
2.5、获取指定日期前1天的日期
方式一:
[root@hadoop-master ~]# date -d "20210221 1 day ago" +%Y-%m-%d
2021-02-20
方式二:
[root@hadoop-master ~]# date -d "20210221 -1 day" +%Y-%m-%d
2021-02-20
方式三:
[root@hadoop-master ~]# date -d "20210221 -1day" +%Y-%m-%d
2021-02-20
方式四:
[root@hadoop-master ~]# date -d "20210221 yesterday" +%Y-%m-%d
2021-02-20
方式五:
[root@hadoop-master ~]# date -d "20210221" --date="-1 day" +%Y-%m-%d
2021-02-20
方式六:
[root@hadoop-master ~]# date -d "20210221 last day" +%Y-%m-%d
2021-02-20
根据上面可以类推指定日期前3天的日期为:
[root@hadoop-master ~]# date -d "20210221 3 day ago" +%Y-%m-%d
2021-02-18
2.6、获取指定日期后1天的日期
方式一:
[root@hadoop-master ~]# date -d "20210221 +1 day" +%Y-%m-%d
2021-02-22
方式二:
[root@hadoop-master ~]# date -d "20210221 1 day" +%Y-%m-%d
2021-02-22
方式三:
[root@hadoop-master ~]# date -d "20210221 1day" +%Y-%m-%d
2021-02-22
方式四:
[root@hadoop-master ~]# date -d "20210221" --date="+1 day" +%Y-%m-%d
2021-02-22
根据上面可以类推指定日期后3天的日期为:
[root@hadoop-master ~]# date -d "20210221 +3 day" +%Y-%m-%d
2021-02-24
2.7、获取指定日期上1个月的第一天
注意每一个月的天数可能不一样,取当前日期月份1号来获取上一个月的月份。
示例:获取20210221的上一个月的月份
方式一:
[root@hadoop-master ~]# date -d "`date -d "20210221" +%Y%m01` -1 month" +%Y-%m-01
2021-01-01
方式二:
[root@hadoop-master ~]# date -d "`date -d "20210221" +%Y%m01` last month" +%Y-%m-01
2021-01-01
2.8、获取指定日期上1个月的最后一天
方式一:
[root@hadoop-master ~]# date -d "`date -d "20210221" +%Y%m01` -1 day" +%Y-%m-%d
2021-01-31
方式二:
[root@hadoop-master ~]# date -d "`date -d "20210221" +%Y%m01` -1day" +%Y-%m-%d
2021-01-31
方式三:
[root@hadoop-master ~]# date -d "`date -d "20210221" +%Y%m01` yesterday" +%Y-%m-%d
2021-01-31
方式四:
[root@hadoop-master ~]# date -d "`date -d "20210221" +%Y%m01` 1 day ago" +%Y-%m-%d
2021-01-31
方式五:
[root@hadoop-master ~]# date -d "`date -d "20210221" +%Y%m01` last day" +%Y-%m-%d
2021-01-31
每天学一点儿shell:linux中时间函数的date的用法相关推荐
- Linux中fork函数的作用及用法
https://blog.csdn.net/weixin_40853073/article/details/81873398
- Linux服务端开发——Linux中stat函数和stat命令使用详解
这篇文章主要介绍了Linux中stat函数和stat命令使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 stat函数和s ...
- linux '$^t' 时间,Linux C时间函数 time_t struct tm
Linux C时间函数 time_t struct tm #include 关于时间的类型: time_t long型,表示从1970年1月1日到现在经过的秒数. struct tm { int tm ...
- linux 纪元时间转换,[转]Linux下时间函数time gettimeofday
Linux下时间函数time & gettimeofday UNIX及Linux的时间系统是由「新纪元时间」Epoch开始计算起,单位为秒.Epoch是指定为1970年1月1日凌晨零点零分零秒 ...
- Linux中popen函数的作用小结
概述 popen()函数通过创建一个管道,调用fork()产生一个子进程,执行一个shell以运行命令来开启一个进程.这篇文章重点给大家介绍Linux中popen函数的作用,感兴趣的朋友一起看看吧 p ...
- mysql时间函数now()_MySQL中时间函数NOW()和SYSDATE()的区别
mysql中日期函数还是比较常用的.主要有NOW()和SYSDATE()两种,虽然都表示当前时间,但使用上有一点点区别. NOW()取的是语句开始执行的时间,SYSDATE()取的是动态的实时时间. ...
- Linux中fork()函数详解
Linux中fork()函数详解 一.fork入门知识 一个进程,包括代码.数据和分配给进程的资源.fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事, ...
- 嵌入式linux通过程序设置系统时间,嵌入式新手如何设定Linux的时间函数
一.时间相关说明 格林威治时间表示0时区的标准时间.其他时区的时间和此标准时间均有时间差.UTC(UniversalTime Coordinated)是世界协调时间,是格林威治时间在互联网中的表示方法 ...
- linux中probe函数传递参数的寻找(下)
点击打开链接 linux中probe函数传递参数的寻找(下) 通过追寻driver的脚步,我们有了努力的方向:只有找到spi_bus_type的填充device即可,下面该从device去打通,当两个 ...
最新文章
- Centos 内存占满 释放内存
- 惠普鼠标g260_惠普g260鼠标怎么样 惠普鼠标怎么样?
- 2018全球科技创新报告
- halcon知识:ncc_model模板匹配
- H2Database 转义符
- Source Insight编辑器配置
- 深入学习jQuery的三种常见动画效果
- 10.4 使用instanceof操作符判断对象类型
- Written English-书面-一般将来时
- windows内核驱动漏洞挖掘工具 - IOCTL Fuzzer
- JavaScript实现图片上传并预览并提交
- 使用hMailServer邮箱服务器收发邮件
- ssm mysql项目实战_SSM 项目实战
- 【编程学习】每天进步一点点,编程学习之路:一款单词转MP3制作软件,单词随身听制作工具v1.0.1
- c语言结构体函数传递方式,c-将struct传递给函数
- 不用邀请照样申请Gmail免费邮箱
- 显存(Video Memory)
- 我国制造业供应链管理存在哪些问题?
- 哈哈...汗汗...
- Mount is denied because the NTFS volume is already exclusively opened. The volume may be already mou
热门文章
- 2015年我国互联网行业概况及现状分析
- hyundai-wia
- abap BDC 使用方法
- ABAP实现本地化的资产负债表和损益表
- 大健康产业里的巨头身影:格局已定但业务创新才刚刚开始
- 回顾国产手机4年沉浮,仍然只是靠这三招翻身
- hibernate连接mysql密码错误,hibernate+mysql too many connections错误
- linux ping结果中mdev,Linux下PING中mdev含义
- 程序员合同日期不到想辞职_程序员被迫辞职,临走把新员工办公桌擦遍,老板:交5万罚款...
- php获得指定位置中间的数据库,PHP 在5.1.* 和5.2.*之间 PDO数据库操作中的不同之处小结...