linux shell date的用法

转自:https://www.cnblogs.com/faberbeta/p/linux-shell002.html

1、date中的参数

%%  一个文字的 %
%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 +hhmm        数字时区(例如,-0400)
%:z +hh:mm      数字时区(例如,-04:00)
%::z +hh:mm:ss  数字时区(例如,-04:00:00)
%:::z           数字时区带有必要的精度 (例如,-04,+05:30)
%Z          按字母表排序的时区缩写 (例如,EDT)

2、打印和设置系统日期和时间

date命令可以打印和设置系统日期和时间,用法示例如下:date '+%F %H:%M:%S'
2019-12-12 14:59:11date '+%F:%H:%M:%S'
2019-12-12:15:00:54date +%s   可以得到UNIX的时间戳;用shell将日期时间与时间戳互转:date -d "2015-08-04 00:00:00" +%s
输出:1438617600时间戳转换为字符串可以这样做: date -d @1438617600  "+%Y-%m-%d:%H:%M:%S"
输出:2015-08-04:00:00:00如果需要得到指定日期的前后几天,时间计算:
seconds=`date -d "2015-08-04 00:00:00" +%s`    #得到时间戳
seconds_new=`expr $seconds + 86400`            #加上一天的秒数86400
date_new=`date -d @$seconds_new "+%Y-%m-%d"`   #获得指定日前加上一天的日前

3、date的-d选项

[keysystem@localhost ~]$ date -d 'now'    #显示当前时间
Fri Feb  2 09:29:28 CST 2018
[keysystem@localhost ~]$
[keysystem@localhost ~]$ date -d '2 days ago'    #显示2天前的时间
Wed Jan 31 09:29:40 CST 2018
[keysystem@localhost ~]$ date -d '3 month 1 day'    #显示3月零1天以后的时间
Thu May  3 09:30:16 CST 2018
[keysystem@localhost ~]$ date -d '25 Dec' +%j    #显示12月25日在当年的哪一天
[keysystem@localhost ~]$ date -d '30 second ago'    #显示30秒前的时间
Fri Feb  2 09:41:03 CST 2018
[keysystem@localhost ~]$ date +%Y%m%d --date "6 months ago"
20200504
[keysystem@localhost ~]$ date +%Y%m%d -d "6 months ago"
20200504

4、在当前时间的基础上往前或往后推


[keysystem@localhost ~]$ date -d "+3 day"
Mon Feb  5 09:45:52 CST 2018
[keysystem@localhost ~]$ date -d "-3 day"
Tue Jan 30 09:46:04 CST 2018
[keysystem@localhost ~]$ date -d "-3 month"
Thu Nov  2 09:46:16 CST 2017
[keysystem@localhost ~]$ date -d "+3 month"
Wed May  2 09:46:24 CST 2018
[keysystem@localhost ~]$ date -d "+3 year"
Tue Feb  2 09:46:35 CST 2021
[keysystem@localhost ~]$ date -d "-3 year"
Mon Feb  2 09:46:40 CST 2015
[keysystem@localhost ~]$ date -d "-3 hour"
Fri Feb  2 06:46:59 CST 2018
[keysystem@localhost ~]$ date -d "+3 hour"
Fri Feb  2 12:47:02 CST 2018
[keysystem@localhost ~]$ date -d "+3 minute"
Fri Feb  2 09:50:09 CST 2018
[keysystem@localhost ~]$ date -d "-3 minute"
Fri Feb  2 09:44:12 CST 2018
[keysystem@localhost ~]$ date -d "-3 second"
Fri Feb  2 09:47:21 CST 2018
[keysystem@localhost ~]$ date -d "+3 second"
Fri Feb  2 09:47:31 CST 2018

5、显示本月的第一天


[keysystem@localhost ~]$ date -d `date +%y%m01`
Thu Feb  1 00:00:00 CST 2018
[keysystem@localhost ~]$ date +%y%m01
[keysystem@localhost ~]$ date +%Y%m01

6、其他

#上个月最后一天
[keysystem@localhost ~]$ date -d `date +%y%m01`"-1 day"
Wed Jan 31 00:00:00 CST 2018
#4个月前的最后一天
[keysystem@localhost ~]$ date -d `date -d "-3 month" +%y%m01`"-1 day"
Tue Oct 31 00:00:00 CST 2017
#11个月后的第一天
[keysystem@localhost ~]$ date -d `date -d "+12 month" +%y%m01`"-1 day"
Thu Jan 31 00:00:00 CST 2019
#11个月后的最后一天
[keysystem@localhost ~]$ date -d `date -d "+12 month" +%y%m01`"-1 day" +%Y%m%d设置日期和时间(date后面的数字代表月日时分年,还可以加秒,需要后面跟英文状态下的句号字符".")
[keysystem@localhost ~]$ date +%m%d%H%M%y
[keysystem@localhost ~]$ date 0202102418
date: cannot set date: Operation not permitted
Fri Feb  2 10:24:00 CST 2018
[keysystem@localhost ~]$ date +%m%d%H%M%y.%S
0202102518.11
[keysystem@localhost ~]$ date 0202102518.11
date: cannot set date: Operation not permitted
Fri Feb  2 10:25:11 CST 2018[keysystem@localhost ~]$ date `date -d "3 days ago" +%m%d%H%M%Y.%S`
date: cannot set date: Operation not permitted
Tue Jan 30 10:26:27 CST 2018
[keysystem@localhost ~]$ date `date -d "$((3600*24)) seconds ago" +%m%d%H%M%Y.%S`
date: cannot set date: Operation not permitted
Thu Feb  1 10:27:10 CST 2018
[keysystem@localhost ~]$

shell实例第20讲:linux shell date的用法相关推荐

  1. shell实例第22讲:shell中分隔符IFS用法

    shell中分隔符IFS用法 1.什么是IFS? IFS在shell中是分隔符的意思,即IFS这个变量中存放了分隔符. 2.IFS是全局变量还是局部变量? (1)linux中变量分两种:全局变量env ...

  2. shell实例第0讲:shell脚本完整pdf文档下载

    shell脚本完整pdf文档下载 链接:https://pan.baidu.com/s/10NTBAHv0zyP-wDnlblVvLg 提取码:6myf shell脚本完整pdf文档目录如下:

  3. linux shell数字怎么比较大小,Linux Shell 数字计算与比较

    直接上脚本, 使用$(())以及$[]进行数字计算 数值比较: n1 -eq n2检查n1是否等于n2         n1 -le n2检查n1是否小于等于n2 n1 -ge n2检查n1是否大于等 ...

  4. shell实例第18讲:利用gzexe加密shell脚本

    利用gzexe加密shell脚本 gzexe_test.sh内容如下: #!/bin/bashecho "gzexe test!" 结果: 使用gzexe加密shell脚本命令:g ...

  5. shell实例第19讲:一个脚本中调用另一个脚本的3种方法

    在Shell脚本中调用另一个脚本(3种方法) 准备:主脚本是second.sh,主脚本中调用first.sh 方法1:exec(1)执行方式:exec /home/weibo/shell_test/s ...

  6. 【Linux】Shell三类变量的作用域——linux shell “永久环境变量”、“临时环境变量”和普通变量之完全解读...

    2015-05-08 00:15 3896人阅读 评论(10) 收藏 举报 本文章已收录于: 分类: 软件开发进阶(419) 作者同类文章X Unix/Linux杂项(118) 作者同类文章X 版权声 ...

  7. linux的shell命令的工作方式,Linux Shell命令的常用方法

    对Shell最简单的认识 这就是你眼中的Shell,当你在Linux中,打开Terminal的时候,出现了一个黑屏,又或一个白屏的窗口的,哦,这就是我们眼中的Shell,这种理解也许对,也许不对. 当 ...

  8. linux shell find depth,搞定 Linux Shell 文本处理工具,看完这篇集锦就够了

    原标题:搞定 Linux Shell 文本处理工具,看完这篇集锦就够了 Linux Shell是一种基本功,由于怪异的语法加之较差的可读性,通常被Python等脚本代替.既然是基本功,那就需要掌握,毕 ...

  9. shell实例第3讲:获取随机8位数字

    获取随机8位数字常用三种方法: 方法一: echo $RANDOM |cksum |cut -c 1-8 说明: (1)shell cksum 命令用于检查文件的CRC是否正确. 确保文件从一个系统传 ...

最新文章

  1. 吴恩达新书《Machine Learning Yearning》中7个实用建议(附论文)
  2. npm WARN enoent ENOENT: no such file or directory
  3. SpringBoot2.X 整合Redis实现简单缓存操作
  4. Android获取手机号归属地
  5. mfc gridctrl 设置某列自动伸长_三明桥梁智能张拉设备数控智能张拉系统全自动智能张拉系统...
  6. Python更改pip镜像源
  7. KindEditor富文本编辑从数据库取出来内容回显在页面上会自动增加行间距以及回车换行会自动间距变大的问题...
  8. android 断点下载的实现,自己动手实现一个Android断点下载
  9. 关于EmmyLua插件创建Lua脚本Require失败的问题
  10. html5 侧面板展开折叠,css实现侧边展开收起
  11. 2020vue面试题汇总
  12. linux中文成方块,给linux添加字体
  13. 团队管理8--管理工作框架及技能图谱
  14. win10管理员名称更改方法
  15. 平面设计师笔试题应答技巧|智测优聘总结
  16. 支付系统中的设计模式09:组合模式
  17. 数据基础---数据可视化
  18. 如何装配一台计算机和安装操作系统,组装机怎么安装系统?手把手教你组装机安装系统教程...
  19. 社交网络中节点重要性的度量
  20. CTFHub | Refer注入

热门文章

  1. python3.6+RF环境搭建
  2. 分页浏览的导航栏Bootstrap和js两种方法
  3. 问候Maven3(笔记一)
  4. Linux 技巧:让进程在后台可靠运行的几种方法(转)
  5. HTML5学习笔记三
  6. flutter布局-8-animated_icons动画图片
  7. 【转载】关于对方法实例化的相关感悟以及unity的50个技巧
  8. Angular 4 辅助路由
  9. day-20: 安装软件包及rpm yum的介绍
  10. 四川启动西南知识产权大数据中心合作共建工作