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

  • 导言
  • date命令
    • 作用
    • 用法
    • 详细全选项参数解释
    • FORMAT解释
    • 常用选项
      • d选项
      • s选项
      • f选项
      • r选项
  • 总结

导言

前面时间段,学习了一个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/%y 10/02/16
%e 按月计的日期,添加空格,等于%_d  2
%F 完整日期格式,等价于 %Y-%m-%d 2016-10-02
%g ISO-8601 格式年份的最后两位 (参见%G) 16
%G ISO-8601 格式年份 (参见%V),一般只和 %V 结合使用 2016
%h 等于%b Oct
%H 小时(00-23) 21
%I 小时(00-12) 09
%j 按年计的日期(001-366) 276
%k 按小时计的日期,空格补充( 0..23)[解释,不足两位补充0为两位],等于%_H 21
%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
%R 24 小时时间的时和分,等价于 %H:%M 21:27
%s 自UTC 时间 1970-01-01 00:00:00 以来所经过的秒数 1475414279
%S 秒(00-60) 46
%t 输出制表符 Tab
%T 时间,等于%H:%M:%S 21:19:46
%u 星期,1 代表星期一 7
%U 一年中的第几周,以周日为每星期第一天(00-53) 40
%V ISO-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

Linux(7)RedHat7 基本命令六-date命令详解_第1张图片

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

Linux(7)RedHat7 基本命令六-date命令详解_第2张图片

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是很实用的命令,各位可以自行熟练使用。

你可能感兴趣的:(linux)