Linux date命令

名称

date

打印或设置系统日期和时间
如果要设置时间可以通过命令 dpkg-reconfigure tzdata 可视化界面设置

概要

date [OPTION] … [+FORMAT]

date [-u|–utc|–universal] [MMDDhhmm[[CC]YY][.ss]]

描述

根据给定格式展示当前时间,或设置系统日期

OPTION

  • -d, --date=STRING

    根据给定的STRING展示时间,而不是当前时间

  • -f, --file=DATEFILE

    对DATEFILE中的每一个进行处理

  • -I[TIMESPEC], --iso-8601=[=TIMESPEC]

  • -r, --reference=FILE

    展示FILE最后修改时间

  • -R, --rfc-2822

    按照RFC 2822格式输出日期和时间,示例:Mon, 07 Aug 2018 10:45:30 -0600

  • –rfc-3339=TIMESPEC

    按照RFC 3339格式输出日期和时间,示例: 2018-08-30 10:46:56-06:00。

    TIMESPEC可选项有 ‘date’, ‘seconds’, ‘ns’ 3种

  • -s, --set=STRING

    根据STRING设置时间

  • -u, --utc, --universal

    展示或设置UTC(Coordinated Universal Time)时间

  • –help

    帮助信息

FORMAT

控制时间输出的格式如下:

格式 说明 示例
%a 一周中某天的缩写 Sun
%A 一周中某天的全称 Sunday
%b 月的缩写 Jan
%B 月的全称 January
%c 日期和时间 Thu Mar 3 23:05:25 2018
%C 世纪 20
%d 一个月中的某一天 01
%D 日期,与%m/%d/%Y相同 08/30/2018
%e 一个月中的某一天,空格填充,与%_d一样 30
%F 日期全部,包含年月日,与%Y-%m-%d 2018-08-30
%h 月的缩写,与%b Jan
%H 小时,00-23 16
%I 小时,00-12 10
%j 一年中的某天001-366 256
%k 小时,0-23,空格填充,与%_H一样 空格 8
%l 小时,00-12,空格填充,与%_H一样 空格 6
%m 月,00-12 08
%M 分钟,00-59 30
%R 24小时格式的小时和分钟,同%H:%M 08:40
%s 秒,从1970-01-01 00:00:00 UTC开始 1535606375
%S 秒,00-60 30
%T 时间,同%H:%M:%S 13:42:30
%u 一周中的某天,1-7 1代表Monday
%U 一年中的某周,00-53,Sunday作为一周中的第一天 12
%w 一周中的某天,0-6 0代表Sunday
%W 一年中的某周,00-53,Monday作为一周中的第一天 12
%y 年的最后2为,00-99 18
%Y 2018
%Z 时区 CST

默认情况下,日期用数字0补全,如20180818,也可以设置其他补全字符

格式 说明 示例
- 连字符,不进行填充, 如8月,直接显示8
_ 下划线,用空格填充 如8月,直接显示 【空额】8
0 用0填充 如8月,直接显示08^
^ 使用大写 如+%a=>Thu,+%^a=>THU
# 取反,如默认大写,则改为小写 如+%Z=>CST,+%#Z=>cst

样例

  • 秒转换为date

    $ date --date='@2147483647'
    
    # 输出
    Thu Jan 19 11:14:07 CST 2038
    
  • 获取时间戳(秒)

    $ date +%s
    
    # 输出
    1535631152
    
  • 指定格式

    $ date +%Y-%m-%d%t%H:%M:%S
    
    # 输出
    2018-08-30  20:20:27
    
  • 秒到指定格式

    $ date --date='@1535631152' +%Y-%m-%d%t%H:%M:%S
    
    # 输出
    2018-08-30  20:12:32
    
  • 指定时区,显示当前时间(通过 tzselect)

    $ TZ='America/Los_Angeles' date
    
    # 输出
    Thu Aug 30 05:10:41 PDT 2018
    

DATE STRING

–date=STRING是date提供的一个更自由的易读的方式,例如: yesterday, tomorrow, 1 day ago, 1 hour ago等,可惜没有找到一个STRING的指导说明。

  • 昨天

    $ date --date="yesterday" +%F
    
    # 输出
    2018-08-29
    
  • 明天

    $ date --date="tomorrow" +%F
    
    # 输出
    2018-08-31
    
  • 一个小时之前

    $ date --date="1 hour ago" +%Y-%m-%d%t%H:%M:%S
    
    # 输出
    2018-08-30 19:26:23
    
  • 通过秒的加减运算实现时间的获取,无论时昨天, 小时,分钟的计算

    # 昨天 2018-08-29
    
    $ date -d @$(( $(date --date="today" +%s) - 24 * 3600)) +"%Y-%m-%d"
    

参考

man date

你可能感兴趣的:(Linux笔记)