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-%d2018-08-30
%h月的缩写,与%bJan
%H小时,00-2316
%I小时,00-1210
%j一年中的某天001-366256
%k小时,0-23,空格填充,与%_H一样空格 8
%l小时,00-12,空格填充,与%_H一样空格 6
%m月,00-1208
%M分钟,00-5930
%R24小时格式的小时和分钟,同%H:%M08:40
%s秒,从1970-01-01 00:00:00 UTC开始1535606375
%S秒,00-6030
%T时间,同%H:%M:%S13:42:30
%u一周中的某天,1-71代表Monday
%U一年中的某周,00-53,Sunday作为一周中的第一天12
%w一周中的某天,0-60代表Sunday
%W一年中的某周,00-53,Monday作为一周中的第一天12
%y年的最后2为,00-9918
%Y2018
%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

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值