2025年3月16日 星期日 甲辰(龙)年 月十五 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 系统应用 > Linux

Linux命令--date命令的用法

时间:02-15来源:作者:点击数:18

简介

本文介绍Linux的date命令的用法。

Linux的date命令可以显示或设置系统的日期与时间。在写脚本时,经常会需要创建带日期的文件或者文件夹,此时date就非常有用。

命令格式

  • date [OPTION]... [+FORMAT]
  • date [-u] [-d datestr] [-s datestr] [--utc] [--universal] [--date=datestr] [--set=datestr] [--help] [--version] [+FORMAT] [MMDDhhmm[[CC]YY][.ss]]

选项

  • -d, --date=STRING:通过字符串显示时间格式,字符串不能是'now'。
  • -f, --file=DATEFILE:类似于--date; 一次从DATEFILE处理一行。
  • -I[FMT], --iso-8601[=FMT]:按照 ISO 8601 格式输出时间,FMT 可以为'date'(默认),'hours','minutes','seconds','ns'。 可用于设置日期和时间的精度,例如:2006-08-14T02:34:56-0600。
  • -R, --rfc-2822 : 按照 RFC 5322 格式输出时间和日期,例如: Mon, 14 Aug 2006 02:34:56 -0600。
  • --rfc-3339=FMT:按照 RFC 3339 格式输出,FMT 可以为'date', 'seconds','ns'中的一个,可用于设置日期和时间的精度, 例如:2006-08-14 02:34:56-06:00。
  • -r, --reference=FILE:显示文件的上次修改时间。
  • -s, --set=STRING:根据字符串设置系统时间。
  • -u, --utc, --universal:显示或设置协调世界时(UTC)。
  • --help:显示帮助信息。
  • --version:输出版本信息。

格式化参数

  • %% 输出字符 %
  • %a 星期几的缩写 (Sun..Sat)
  • %A 星期的完整名称(Sunday..Saturday)。
  • %b 缩写的月份名称(例如,Jan)
  • %B 完整的月份名称(例如,January)
  • %c 本地日期和时间(例如,Thu Mar 3 23:05:25 2005
  • %C 世纪,和%Y类似,但是省略后两位(例如,20
  • %d 日 (01..31)
  • %D 日期,等价于%m/%d/%y
  • %e 一月中的一天,格式使用空格填充,等价于%_d
  • %F 完整的日期;等价于 %Y-%m-%d
  • %g ISO 标准计数周的年份的最后两位数字
  • %G ISO 标准计数周的年份,通常只对%V有用
  • %h 等价于 %b
  • %H 小时 (00..23)
  • %I 小时 (01..12)
  • %j 一年中的第几天 (001..366)
  • %k 小时,使用空格填充 ( 0..23); 等价于 %_H
  • %l 小时, 使用空格填充 ( 1..12); 等价于 %_I
  • %m 月份 (01..12)
  • %M 分钟 (00..59)
  • %n 新的一行,换行符
  • %N 纳秒 (000000000..999999999)
  • %p 用于表示当地的AM或PM,如果未知则为空白
  • %P 类似 %p, 但是是小写的
  • %r 本地的 12 小时制时间(例如 11:11:04 PM)
  • %R 24 小时制 的小时与分钟; 等价于 %H:%M
  • %s 自 1970-01-01 00:00:00 UTC 到现在的秒数
  • %S 秒 (00..60)
  • %t 插入水平制表符 tab
  • %T 时间; 等价于 %H:%M:%S
  • %u 一周中的一天 (1..7); 1 表示星期一
  • %U 一年中的第几周,周日作为一周的起始 (00..53)
  • %V ISO 标准计数周,该方法将周一作为一周的起始 (01..53)
  • %w 一周中的一天(0..6),0代表星期天
  • %W 一年中的第几周,周一作为一周的起始(00..53
  • %x 本地的日期格式
  • %X 本地的日期格式
  • %y 年份后两位数字 (00..99)
  • %Y 年
  • %z +hhmm 格式的数值化时区格式(例如,-0400
  • %:z +hh:mm 格式的数值化时区格式(例如,-04:00
  • %::z +hh:mm:ss格式的数值化时区格式(例如,-04:00:00
  • %:::z 数值化时区格式,相比上一个格式增加':'以显示必要的精度(例如,-04,+05:30
  • %Z 时区缩写 (如 EDT)

默认情况下,日期用零填充数字字段;以下可选的符号可以跟在'%'前面:

  • -      (连字符) 不要填充相应的字段。
  • +      用数字0填充
  • _      (下划线) 使用空格填充相应的字段。
  • 0      (数字0) 使用数字0填充相应的字段。
  • ^      允许的情况下使用大写。
  • #      允许的情况下将默认的大写转换为小写,默认的小写转换为大写。

示例

输出当前时间

作用 命令 结果
默认的输出 date 2023年 04月 11日 星期二 19:11:20 CST
输出日期和时间 date +"%F_%T" 2023-04-11_19:11:20
本地日期和时间 date +"%c"  2023年04月11日 星期二 19时11分48秒
显示日期(年份只输出后2位) date +"%D" 04/11/23
显示完整日期 date +"%x" 2023年04月11日
显示24小时的时间格式 date +"%T" 19:11:20
显示本地24小时的时间格式 date +"%X" 09时15分01秒

输出指定格式的时间

作用 命令 结果
输出年月日时分秒 date +"%Y%m%d_%H%M%S" 20230411_195048
输出年月日 date +"%Y%m%d" 20230411
日期格式转换  date -d "2009-12-12" +"%Y/%m/%d %H:%M:%S" 2009/12/12 00:00:00
日期时间格式转换 date -d "2009-12-12 14:23:35" +"%Y/%m/%d %H:%M:%S" 2009/12/12 14:23:35
apache格式转换 date -d "Dec 5, 2009 10:23:37 AM" +"%Y-%m-%d %H:%M:%S" 2009-12-05 10:23:37

时间加减

如下时间加减适用于所有字段:year、month、day、hour、minute、second。

作用 命令 结果
输出后一天的时间 date -d "+1 day" +"%Y%m%d_%H%M%S"
或者:
date -d "+1 days" +"%Y%m%d_%H%M%S"
或者:
date -d tomorrow +"%Y%m%d_%H%M%S"
或者:
date -d "-1 day ago" +"%Y%m%d_%H%M%S"
或者
date -d "next day" +"%Y%m%d_%H%M%S"
20230412_190602
(今天是2023 04 11)
输出前2小时的时间 date -d "-2 hour" +"%Y%m%d_%H%M%S"
或者:
date -d "-2 hours" +"%Y%m%d_%H%M%S"
或者:
date -d "2 hour ago" +"%Y%m%d_%H%M%S"
20230411_170527
输出前1小时的时间 date -d "last hour" +"%Y%m%d_%H%M%S" 20230411_180527
往前1个月零1天 date -d "1 month ago 1 day ago" +"%Y%m%d_%H%M%S" 20230310_190527
指定日期的加减 date -d "2023-03-20 -2 day" +"%F_%T" 2023-03-18_00:00:00

设置时间

只有root权限才能设置时间,其他只能查看。

作用 命令 结果
只设置日期 date -s 20120523 设置成20120523,这样会把具体时间设置成00:00:00
只设置时间 date -s 01:01:01 设置具体时间,不会对日期做更改
设置日期与时间 date -s "01:01:01 2012-05-23"
date -s "01:01:01 20120523"  
date -s "2012-05-23 01:01:01"
date -s "20120523 01:01:01"  
设置日期和时间

在脚本中使用

1.检查一组命令花费的时间

  • start=$(date +%s)
  • nmap wangchujiang.com &> /dev/null
  • end=$(date +%s)
  • difference=$(( end - start ))
  • # 显示执行时间
  • echo $difference seconds.

2.输出带有时间的字符串

  • # 通常使用的方法(必须是双引号,单引号不能替换变量):
  • echo "Current time: $(date +"%Y/%m/%d")"
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐