zzxworld

Linux date 命令使用指南

Linux date 命令使用指南

date 命令在 Linux 系统中主要用来获取或设置系统日期和时间。命令提供了强大的格式化输出功能,可以根据需要获取任意范围的时间信息。掌握这个命令可以为日常 Shell 脚本的开发带来不少便利。比如按日期归档或备份数据,就离不开这个命令的支持。本文全面的归纳了这个命令的使用格式和选项参数列表,并提供了一些案例以供参考。

date 命令格式

date [选项]... [+格式]
date [选项] [MMDDhhmm[[CC]YY][.ss]]

date 命令示例

查看当前系统时间:

date

格式化显示指定的时间:

date -d '2022-09-21 12:00:00'

-d 参数后的日期还支持一些特殊语义值,比如查看昨天的时间信息:

date -d 'yesterday'

一些常用的语义值格式如下:

  • yesterday: 昨天
  • tomorrow : 明天
  • friday: 本周五
  • last friday: 上周五
  • next friday: 下周五
  • next week: 下周今天
  • 2 days: 两天后
  • 2 days ago: 两天前

以上这些语义值可以根据格式举一反三使用。

查看文件最后修改时间:

date -r /etc/hosts

按指定格式显示时间:

date +"Year: %Y, Month: %m, Day: %d"

上面命令中的 %Y%m%ddate 命令支持的特殊格式字符,类似可用的特殊格式字符可以参考文末结尾的格式参考列表。

date 命令选项参数

缩写 完整名称 说明
-d --date=STRING 显示由 STRING 指定的时间, 而不是当前时间
-f --file=DATEFILE 显示 DATEFILE 中每一行指定的时间, 如同将 DATEFILE 中的每行作为 --date 的参数一样
-I --iso-8601[=TIMESPEC] 按照 ISO-8601 的日期/时间格式输出时间. TIMESPEC=date (或者不指定时)仅输出日期,等于 hours, minutes, 或 seconds 时按照指定精度输出日期及时间
-r --reference=FILE 显示 FILE 的最后修改时间
-R --rfc-822 根据 RFC-822 指定格式输出日期
-s --set=STRING 根据 STRING 设置时间
-u --utc, --universal 显示或设置全球时间(格林威治时间)
--help 显示本帮助文件并退出
--version 显示版本信息并退出

date 命令格式参考

格式 FORMAT 控制着输出格式. 仅当选项指定为全球时间时本格式才有效。 分别解释如下:

格式符号 说明 示例
%% 文本格式的百分号字符
%a 当前区域的星期几的简写 Sun..Sat
%A 当前区域的星期几的全称 Sunday..Saturday
%b 当前区域的月份的简写 Jan..Dec
%B 当前区域的月份的全称 January..December
%c 当前区域的日期和时间 Sat Nov 04 12:02:33 EST 1989
%d 月份中的几号,用两位表示 01..31
%D 日期,按照 月/日期/年 格式显示 mm/dd/yy
%e 月份中的几号,个位数没有前面的零 1..31
%h %b
%H 小时,按 24 小时制显示 00..23
%I 小时,按 12 小时制显示 01..12
%j 一年中的第几天,用三位数表示 001..366
%k 小时,按 24 小时制显示,个位数前面没有零 0..23
%l 小时,按 12 小时制显示,个位数前面没有零 1..12
%m 月份,用两位表示 01..12
%M 分钟数,用两位表示 00..59
%n 换行
%p 当前时间是上午 AM 还是下午 PM
%r 时间,按 12 小时制显示 hh:mm:ss [A/P]M
%s 从 1970年1月1日0点0分0秒到现在历经的秒数
%S 秒数(用两位表示) 00..60
%t 水平方向的 tab 制表符
%T 时间,按 24 小时制显示 hh:mm:ss
%U (一年中的)第几个星期,以星期天作为一周的开始(用两位表示) 00..53
%V (一年中的)第几个星期,以星期一作为一周的开始(用两位表示) 01..52
%w 用数字表示星期几,0 代表星期天 0..6
%W (一年中的)第几个星期,以星期一作为一周的开始(用两位表示) 00..53
%x 按照 mm/dd/yy 格式显示当前日期
%X 按照 %H:%M:%S 格式显示当前时间
%y 年的后两位数字 00..99
%Y 用 4 位数表示的年份 1970...
%z 按照 RFC-822 中指定的数字时区显示(如, -0500) (为非标准扩充)
%Z 时区(例如, EDT (美国东部时区)), 如果不能决定是哪个时区则为空

默认情况下用 0 填充数据的空缺部分。GNU 的 date 命令能分辨在 % 和数字指示之间的以下修改。- (连接号) 不进行填充,_ (下划线) 用空格进行填充。