Linux(7)RedHat7 基本命令六-date命令详解

导言

前面时间段,学习了一个hwclock命令和clock命令的语法,本文主要是介绍date命令,这个命令也是十分常见的。

很多shell脚本里面需要打印不同格式的时间或日期,以及要根据时间和日期执行操作。延时通常用于脚本执行过程中提供一段等待的时间。日期可以以多种格式去打印,也可以使用命令设置固定的格式。在类UNIX系统中,日期被存储为一个整数,其大小为自世界标准时间(UTC)1970年1月1日0时0分0秒起流逝的秒数。

date命令

作用

用给出的FORMAT(格式)显示当前时间,或设置系统时间(日期)

用法

date [选项]... [+格式]
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]

详细全选项参数解释

短选项长选项含义(作用)
-d--date=STRING显示字符串所指的日期与时间,而不是‘now’这种字符串。字符串前后必须加上双引号;

STRING是比较随性的可读的字符串,比如说“2012-06-16 18:31:00”或者“next Thursday”,这个字符串通常包含日历时间、时间、星期、日期、相对时间,相对日期或者数字。
-f--file=DATEFILE 类似–date参数显示DATEFILE文件中的每行时间;
和-date参数类似,对文件DATEFILE里的每一行做date -d操作;
意思就是DATEFILE每一行都写着时间,从文件中每读出一行,并将时间以date -d ‘[每一行的内容]’
-I[TIMESPEC]--iso-8601[=TIMESPEC]以ISO 8601 格式显示日期/时间。默认情况下,TIMESPEC值为‘date’(只显示日期),’hours’, ‘minutes’, or ‘seconds’对日期和时间显示相应的精度
-r--reference=文件显示文件指定文件的最后修改时间
-R--rfc-2822以RFC 2822格式输出日期和时间
例如:2016年10月2日,星期日 19:54:56 -0600
--rfc-3339=TIMESPEC以RFC 2822格式输出日期和时间。
对日期和时间显示相应的精度,TIMESPEC可取值’date’, ‘seconds’, 或’ns’。时间和日期的组件被单一的空格说分隔,比如“ 2016-10-02 19:54:56-06:00”
-s--set=STRING以STRING的描述内容设置系统时间
-u--utc--universal显示或设定为Coordinated Universal Time(UTC)时间格式
--help显示此帮助信息并退出
--version显示版本信息并退出

FORMAT解释

给定的格式FORMAT 控制着输出,解释序列如下:

格式解释实例
%%一个文字的 %%
%a当前locale 的星期名缩写(例如: 日,代表星期日)Sun
%A当前locale 的星期名全称 (如:星期日)Sunday
%b当前locale 的月名缩写 (如:一,代表一月)Oct
%B当前locale 的月名全称 (如:一月)October
%c当前locale 的日期和时间 (如:2005年3月3日 星期四 23:05:25)Sun 02 Oct 2016 09:25:55 PM CST
%C世纪;比如 %Y,通常为省略当前年份的后两位数字(例如:20)20
%d按月计的日期(例如:01)01
%D按月计的日期;等于%m/%d/%y10/02/16
%e按月计的日期,添加空格,等于%_d 2
%F完整日期格式,等价于 %Y-%m-%d2016-10-02
%gISO-8601 格式年份的最后两位 (参见%G)16
%GISO-8601 格式年份 (参见%V),一般只和 %V 结合使用2016
%h等于%bOct
%H小时(00-23)21
%I小时(00-12)09
%j按年计的日期(001-366)276
%k按小时计的日期,空格补充( 0..23)[解释,不足两位补充0为两位],等于%_H21
%l按小时计的日期,添加空格( 0..12)[解释,不足两位补充0为两位]9
%m月(01..12)10
%M分钟 (00..59)04
%n换行
%N纳秒(000000000-999999999)960061182
%p当前locale 下的”上午”或者”下午”,未知时输出为空PM
%P与%p 类似,但是输出小写字母pm
%r当前locale 下的 12 小时时钟时间 (如:11:11:04 下午)09:27:02 PM
%R24 小时时间的时和分,等价于 %H:%M21:27
%s自UTC 时间 1970-01-01 00:00:00 以来所经过的秒数1475414279
%S秒(00-60)46
%t输出制表符 Tab
%T时间,等于%H:%M:%S21:19:46
%u星期,1 代表星期一7
%U一年中的第几周,以周日为每星期第一天(00-53)40
%VISO-8601 格式规范下的一年中第几周,以周一为每星期第一天(01-53)39
%w一星期中的第几日(0-6),0 代表周一6
%W一年中的第几周,以周一为每星期第一天(00-53)39
%x当前locale 下的日期描述 (如:12/31/99)10/02/2016
%X当前locale 下的时间描述 (如:23:13:48)09:27:48 PM
%y年份最后两位数位 (00-99)16
%Y年份2016
%z+hhmm数字时区(例如,-0400)+0800
%:z+hh:mm数字时区(例如,-04:00)+08:00
%::z数字时区(例如,-04:00:00)+08:00:00
%:::z数字时区带有必要的精度 (例如,-04,+05:30)+08
%Z按字母表排序的时区缩写 (例如,EDT)CST

默认情况下,日期的数字区域以0 填充。
下面可选的标志可能跟在‘%’后:

  1. -          (连字号) 不填补域
  2. _          (下划线)用空格填补
  3. 0         用0来填补
  4. ^         尽可能使用大写字母
  5. #          尽可能使用小写

在任何标记之后还允许一个可选的域宽度指定,它是一个十进制数字。
作为一个可选的修饰声明,它可以是E,在可能的情况下使用本地环境关联的表示方式;或者是0,在可能的情况下使用本地环境关联的数字符号。

常用选项

d选项

显示字符串所指的日期与时间

# 将从1970-01-01 UTC流逝的秒数转变成日期

[root@tqw tqw]# date --date='@2147483647'

Tue Jan 19 11:14:07 CST 2038

# 显示2014-05-02表示的日期

[root@tqw tqw]# date -d 2014-05-02

Fri May  2 00:00:00 CST 2014

[root@tqw tqw]# date --date=2014-05-02

Fri May  2 00:00:00 CST 2014

# 显示在美国的西海岸下周五9点的时间的当地时间
[tqw@localhost etc]$ date --date='TZ="America/Los_Angeles" 09:00 next Fri'

20161008日 星期六 00:00:00 CST

这里写图片描述

s选项

以STRING的描述内容设置系统时间

#" "表示空格字符,-s 2015-10-03" "18:17:00设置2015-10-03 18:17:00为系统时间

#使用+%Y-%m-%d%" "%H:%M:%S指定2015-10-03 18:17:00的日期格式

[root@localhost ~]# date -s 2015-10-03" "18:17:00 +%Y-%m-%d%" "%H:%M:%S

2015-10-03% 18:17:00

#使用长命令方式设置

[root@localhost ~]# date --set=2015-10-03" "18:17:00 +%Y-%m-%d%" "%H:%M:%S

2015-10-03% 18:17:00

本例子不截图

f选项

类似–date参数显示DATEFILE文件中的每行时间;

    #以下是文件中的内容
test
    2016-10-01 22:37:00

    2016-10-01 22:40:00

    2016-10-01 22:50:08
    # 将上诉内容写入文件
    [root@tqw tqw]# touch test

    [root@tqw tqw]# vim test

    #逐行读取日期字符串并输出

    [root@tqw tqw]# date -f test

    Sat Oct  1 22:37:00 CST 2016

    Sat Oct  1 22:40:00 CST 2016

    Sat Oct  1 22:50:08 CST 2016

    [root@tqw tqw]# date --file=test

    Sat Oct  1 22:37:00 CST 2016

    Sat Oct  1 22:40:00 CST 2016

    Sat Oct  1 22:50:08 CST 2016

这里写图片描述

r选项

显示文件指定文件的最后修改时间

    # 显示文件的最后修改时间

    [root@tqw tqw]# date -r test

    Sun Oct  2 22:39:03 CST 2016

    [root@tqw tqw]# date --reference=test

    Sun Oct  2 22:39:03 CST 2016

这里写图片描述

总结

本文介绍了date的全选项命令,并介绍了一些用法,date是很实用的命令,各位可以自行熟练使用。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YuYunTan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值