Linux 基础教程

Linux 参考手册

Linux 笔记

Linux date 命令详解

Linux 命令行大全手册详解 Linux 命令行大全手册详解


Linux 的 date 命令用来显示或设置系统的时间和日期。它主要用于通过时间日期格式化的转换,为一些脚本任务提供时间日期的数据。

语法

命令形式

date [OPTION]... [+FORMAT]

命令选项

-d, --date=STRING
显示字符串指定的日期时间,如 nowyesterdaytodaytomorrow 等。
-f, --file=DATEFILE
类似 --date 选项,从日期描述文件中按行读取日期时间描述。
-r, --reference=FILE
显示指定文件的最后修改日期时间。
-R, --rfc-2822
RFC 2822 格式输出日期和时间,如 Sat, 13 Jun 2020 14:21:01 +0800
-s, --set=STRING
以字符串指定的描述设置日期时间。
-u, --utc, --universal
显示或设置 UTC 时间(世界标准时间)。
--help
显示帮助信息并退出。
--version
显示版本信息并退出。

命令格式

FORMAT 即输出的格式,具体如下:

%%
显示文本 %
%a
显示缩写形式的本地的星期信息(如,Sun)。
%A
显示全写形式的本地的星期信息(如,Sunday)。
%b
显示缩写形式的本地的月份信息(如,Jan)。
%B
显示全写形式的本地的月份信息(如,January)。
%c
显示本地的日期时间信息(如,六 6/13 15:00:25 2020)。
%C
显示世纪信息,类似 %Y,但是它会去掉年份的后两位数字(如,20)。
%d
显示月计的日期信息(如,01)。
%D
显示日期信息,等同于 %m/%d/%y
%e
显示月计的日期信息,有空格间距,等同于%_d
%F
显示完整的日期信息,等同于%Y-%m-%d
%g
以 ISO 形式显示年份的最后两位信息(参见 %G)。
%G
以 ISO 形式显示完整年份信息。
%h
等同于 %b
%H
24 进制的小时信息,范围从 0023
%I
12 进制的小时信息,范围从 0112
%j
以年计的天数信息,范围从 001366
%k
24 进制的小时信息,个位数会去掉前置 0,范围从 023,等同于 %_H
%l
12 进制的小时信息,个位数会去掉前置 0,范围从 112,等同于 %_I
%m
月份信息,范围从 0112
%M
分钟信息,范围从 0059
%n
换行符。
%N
纳秒信息,范围从 000000000999999999
%p
显示 AMPM 的本地信息,中文的话,显示 上午下午
%P
等同于 %p,但是小写形式,但是对中文无作用,它会直接输出 P
%r
12 进制的本地时间信息,如 11:11:04 PM
%R
24 进制的小时分钟信息,等同于 %H:%M
%s
时间戳信息,自 UTC 时间 1970-01-01 00:00:00 以来的秒数。
%S
秒数信息,范围从 0060

常用命令

显示当前的年月日信息:

[linux@Linux ~]$ date +%Y%m%d
20200613
[linux@Linux ~]$ date +%Y-%m-%d
2020-06-13

显示 n 天、n 星期、n 月、n 年的前后时间,示例如下:

[linux@Linux ~]$ date -d '2 day ago'      # 2 天前
Thu Jun 11 16:16:20 CST 2020
[linux@Linux ~]$ date -d '-2 day ago'     # 2 天后
Mon Jun 15 16:16:24 CST 2020
[linux@Linux ~]$ date -d '3 week ago'     # 3 周前
Sat May 23 16:16:33 CST 2020
[linux@Linux ~]$ date -d '-3 week ago'    # 3 周后
Sat Jul  4 16:16:40 CST 2020
[linux@Linux ~]$ date -d '4 month ago'    # 4 个月前
Thu Feb 13 16:16:52 CST 2020
[linux@Linux ~]$ date -d '-4 month ago'   # 4 个月后
Tue Oct 13 16:16:57 CST 2020
[linux@Linux ~]$ date -d '5 year ago'     # 5 年前
Sat Jun 13 16:17:05 CST 2015
[linux@Linux ~]$ date -d '-5 year ago'    # 5 年后
Fri Jun 13 16:17:08 CST 2025

获取昨天的日期

可以利用 -d 选项结合日期描述,有 3 种方式,具体如下:

$ date +%Y%m%d -d "-1 days"
20200925

另一种描述文案的方式如下:

$ date +%Y%m%d -d "1 day ago"
20200925

也等同于如下表达:

$ date +%Y%m%d -d "yesterday"
20200925

遍历日期范围

一般 t+1 的离线任务中,往往需要遍历一定时间范围内日期,然后将每天的日期作为参数或条件进行下一步操作。

假设从昨天往前推 7 天日期进行遍历,具体代码如下:

#! /bash/sh
for i in {1..7}
do
    day=`date +%Y%m%d -d "-$i days"`
    echo $day
done

相关推荐