Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit b2b841b

Browse filesBrowse files
authored
Update date.md
按照外部命令的格式(chmod.md)更新了文档格式及内容。
1 parent 78d8ce8 commit b2b841b
Copy full SHA for b2b841b

1 file changed

+118-103Lines changed: 118 additions & 103 deletions

File tree

Expand file treeCollapse file tree
Open diff view settings
Filter options
Expand file treeCollapse file tree
Open diff view settings
Collapse file

‎command/date.md‎

Copy file name to clipboardExpand all lines: command/date.md
+118-103Lines changed: 118 additions & 103 deletions
  • Display the source diff
  • Display the rich diff
Original file line numberDiff line numberDiff line change
@@ -3,168 +3,183 @@ date
33

44
显示或设置系统时间与日期
55

6-
## 补充说明
6+
## 概要
77

8-
**date命令** 是显示或设置系统时间与日期。
8+
```shell
9+
date [OPTION]... [+FORMAT]
10+
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
11+
```
912

10-
很多shell脚本里面需要打印不同格式的时间或日期,以及要根据时间和日期执行操作。延时通常用于脚本执行过程中提供一段等待的时间。日期可以以多种格式去打印,也可以使用命令设置固定的格式。在类UNIX系统中,日期被存储为一个整数,其大小为自世界标准时间(UTC)1970年1月1日0时0分0秒起流逝的秒数。
13+
## 主要用途
1114

12-
### 语法
15+
- 转换时间到选定的格式,默认为当前。
16+
- 设置系统时间。
1317

14-
```shell
15-
date(选项)(参数)
16-
```
18+
## 参数
1719

18-
### 选项
20+
format:输出的时间格式。
1921

2022
```shell
21-
-d<字符串>:显示字符串所指的日期与时间。字符串前后必须加上双引号;
22-
-s<字符串>:根据字符串来设置日期与时间。字符串前后必须加上双引号;
23-
-u:显示GMT;
24-
--help:在线帮助;
25-
--version:显示版本信息。
23+
format可用的转义序列如下:
24+
25+
%% 百分号
26+
%a 当地缩写的工作日名称(例如,Sun)
27+
%A 当地完整的工作日名称(例如,Sunday)
28+
%b 当地缩写的月份名称(例如,Jan)
29+
%B 当地完整的月份名称(例如,January)
30+
%c 当地的日期和时间(例如,Thu Mar 3 23:05:25 2005)
31+
%C 世纪,和%Y类似,但是省略后两位(例如,20)
32+
%d 一月中的一天(例如,01)
33+
%D 日期,等价于%m/%d/%y
34+
%e 一月中的一天,格式使用空格填充,等价于%_d
35+
%F 完整的日期;等价于%+4Y-%m-%d
36+
%g ISO标准计数周的年份的最后两位数字
37+
%G ISO标准计数周的年份,通常只对%V有用
38+
%h 等价于%b
39+
%H 小时,范围(00..23)
40+
%I 小时,范围(00..23)
41+
%j 一年中的一天,范围(001..366)
42+
%k 小时,使用空格填充,范围(0..23),等价于%_H
43+
%l 小时,使用空格填充,范围(1..12),等价于%_I
44+
%m 月,范围(01..12)
45+
%M 分钟,范围(00..59)
46+
%n 换行符
47+
%N 纳秒,范围(000000000..000000000)
48+
%p 用于表示当地的AM或PM,如果未知则为空白
49+
%P 类似于%p,但用小写表示
50+
%q 季度,范围(1..4)
51+
%r 当地以12小时表示的时钟时间(例如,11:11:04 PM)
52+
%R 24小时每分钟;等价于%H:%M
53+
%s 自协调世界时1970年01月01日00时00分以来的秒数
54+
%S 秒数,范围(00..60)
55+
%t 水平制表符
56+
%T 时间;等价于%H:%M:%S
57+
%u 一周中的一天(1..7),1代表星期一
58+
%U 一年中的第几周,周日作为一周的起始(00..53)
59+
%V ISO标准计数周,该方法将周一作为一周的起始(01..53)
60+
%w 一周中的一天(0..6),0代表星期天
61+
%W 一年中的第几周,周一作为一周的起始(00..53)
62+
%x 当地的日期表示(例如,12/31/99)
63+
%X 当地的时间表示(例如,23:13:48)
64+
%y 年份后两位数字,范围(00..99)
65+
%Y 年份
66+
%z +hhmm格式的数值化时区格式(例如,-0400)
67+
%:z +hh:mm格式的数值化时区格式(例如,-04:00)
68+
%::z +hh:mm:ss格式的数值化时区格式(例如,-04:00:00)
69+
%:::z 数值化时区格式,相比上一个格式增加':'以显示必要的精度(例如,-04,+05:30)
70+
%Z 时区缩写(如EDT)
71+
72+
默认情况下,日期用零填充数字字段;以下可选的符号可以跟在'%'后面:
73+
74+
- (连字符) 不要填充相应的字段。
75+
_ (下划线) 使用空格填充相应的字段。
76+
0 (数字0) 使用数字0填充相应的字段。
77+
+ 用数字0填充,未来年份大于4位数字则在前面加上'+'号。
78+
^ 允许的情况下使用大写。
79+
# 允许的情况下将默认的大写转换为小写,默认的小写转换为大写。
80+
81+
在任何标志之后都有一个可选的字段宽度,如小数;然后是一个可选的修饰符,在可用的情况下,使用E来使用当地语言环境的替代表示,
82+
使用O来使用当地语言环境的替代数字符号。
2683
```
2784

28-
### 参数
29-
30-
<+时间日期格式>:指定显示时使用的日期时间格式。
31-
32-
### 日期格式字符串列表
85+
## 选项
3386

3487
```shell
35-
%H # 小时,24小时制(00~23)
36-
%I # 小时,12小时制(01~12)
37-
%k # 小时,24小时制(0~23)
38-
%l # 小时,12小时制(1~12)
39-
%M # 分(00~59)
40-
%p # 显示出上午或下午
41-
%r # 时间,12小时制
42-
%s # 从1970年1月1日0点到目前经历的秒数
43-
%S # 秒(00~59)
44-
%T # 时间(24小时制)(hh:mm:ss)
45-
%X # 显示时间的格式(%H时%M分%S秒)
46-
%Z # 按字母表排序的时区缩写
47-
%a # 星期名缩写
48-
%A # 星期名全称
49-
%b # 月名缩写
50-
%B # 月名全称
51-
%c # 日期和时间
52-
%d # 按月计的日期(01~31)
53-
%D # 日期(mm/dd/yy)
54-
%h # 和%b选项相同
55-
%j # 一年的第几天(001~366)
56-
%m # 月份(01~12)
57-
%w # 一个星期的第几天(0代表星期天)
58-
%W # 一年的第几个星期(00~53,星期一为第一天)
59-
%x # 显示日期的格式(mm/dd/yy)
60-
%y # 年份的最后两个数字(1999则是99)
61-
%Y # 年份(比如1970、1996等)
62-
%C # 世纪,通常为省略当前年份的后两位数字
63-
%U # 一年中的第几周,以周日为每星期第一天
64-
%e # 按月计的日期,添加空格,等于%_d
88+
长选项与短选项等价
89+
90+
-d, --date=STRING 解析字符串并按照指定格式输出,字符串不能是'now'
91+
--debug 注释已解析的日期,并将有疑问的用法发送到标准错误。
92+
-f, --file=DATEFILE 类似于--date; 一次从DATEFILE处理一行。
93+
-I[FMT], --iso-8601[=FMT] 按照ISO 8601格式输出,FMT可以为'date'(默认),'hours''minutes''seconds''ns'
94+
例如:2006-08-14T02:34:56-06:00
95+
-R, --rfc-email 按照RFC 5322格式输出,例如: Mon, 14 Aug 2006 02:34:56 -0600
96+
--rfc-3339=FMT 按照RFC 3339格式输出,FMT可以为'date', 'seconds','ns'中的一个,
97+
例如:2006-08-14 02:34:56-06:00
98+
-r, --reference=FILE 显示文件的上次修改时间。
99+
-s, --set=STRING 根据字符串设置系统时间。
100+
-u, --utc, --universal 显示或设置世界协调时(UTC)。
101+
--help 显示帮助信息并退出。
102+
--version 显示版本信息并退出。
65103
```
66104

67-
### 实例
105+
## 返回值
68106

69-
格式化输出:
107+
返回状态为成功除非给出了非法选项或非法参数。
108+
109+
## 例子
70110

71111
```shell
112+
# 格式化输出:
72113
date +"%Y-%m-%d"
73114
2009-12-07
74-
```
75-
76-
输出昨天日期:
77115

78-
```shell
116+
# 输出昨天日期:
79117
date -d "1 day ago" +"%Y-%m-%d"
80118
2012-11-19
81-
```
82-
83-
2秒后输出:
84119

85-
```shell
120+
# 2秒后输出:
86121
date -d "2 second" +"%Y-%m-%d %H:%M.%S"
87122
2012-11-20 14:21.31
88-
```
89-
90-
传说中的 1234567890 秒:
91123

92-
```shell
93-
date -d "1970-01-01 1234567890 seconds" +"%Y-%m-%d %H:%m:%S"
124+
# 传说中的 1234567890 秒:
125+
date -d "1970-01-01 1234567890 seconds" +"%Y-%m-%d %H:%M:%S"
126+
# 或者
127+
date -d@1234567890 +"%F %T"
128+
# 输出结果
94129
2009-02-13 23:02:30
95-
```
96-
97-
普通转格式:
98130

99-
```shell
131+
# 时间格式转换:
100132
date -d "2009-12-12" +"%Y/%m/%d %H:%M.%S"
133+
# 输出结果
101134
2009/12/12 00:00.00
102-
```
103-
104-
apache格式转换:
105135

106-
```shell
136+
# apache格式转换:
107137
date -d "Dec 5, 2009 12:00:37 AM" +"%Y-%m-%d %H:%M.%S"
138+
# 输出结果
108139
2009-12-05 00:00.37
109-
```
110140

111-
格式转换后时间游走:
112-
113-
```shell
141+
# 格式转换后时间游走:
114142
date -d "Dec 5, 2009 12:00:37 AM 2 year ago" +"%Y-%m-%d %H:%M.%S"
143+
# 输出结果
115144
2007-12-05 00:00.37
116-
```
117145

118-
加减操作:
119-
120-
```shell
121-
date +%Y%m%d # 显示前天年月日
146+
# 时间加减操作:
147+
date +%Y%m%d # 显示年月日
122148
date -d "+1 day" +%Y%m%d # 显示前一天的日期
123149
date -d "-1 day" +%Y%m%d # 显示后一天的日期
124150
date -d "-1 month" +%Y%m%d # 显示上一月的日期
125151
date -d "+1 month" +%Y%m%d # 显示下一月的日期
126152
date -d "-1 year" +%Y%m%d # 显示前一年的日期
127153
date -d "+1 year" +%Y%m%d # 显示下一年的日期
128-
```
129154

130-
设定时间:
131-
132-
```shell
155+
# 设定时间:
133156
date -s # 设置当前时间,只有root权限才能设置,其他只能查看
134-
date -s 20120523 # 设置成20120523,这样会把具体时间设置成空00:00:00
157+
date -s 20120523 # 设置成20120523,这样会把具体时间设置成00:00:00
135158
date -s 01:01:01 # 设置具体时间,不会对日期做更改
136159
date -s "01:01:01 2012-05-23" # 这样可以设置全部时间
137160
date -s "01:01:01 20120523" # 这样可以设置全部时间
138161
date -s "2012-05-23 01:01:01" # 这样可以设置全部时间
139162
date -s "20120523 01:01:01" # 这样可以设置全部时间
140-
```
141-
142-
有时需要检查一组命令花费的时间,举例:
143-
144-
```shell
145-
#!/bin/bash
146163

164+
# 有时需要检查一组命令花费的时间:
147165
start=$(date +%s)
148166
nmap wangchujiang.com &> /dev/null
149-
150167
end=$(date +%s)
151168
difference=$(( end - start ))
169+
# 显示执行时间
152170
echo $difference seconds.
153-
```
154171

155-
当你考虑输出带有时间的字符串时,例如(Current time: 2019/05/19):
156-
157-
最常用的方法:
158-
159-
```shell
172+
# 当你考虑输出带有时间的字符串时,例如(Current time: 2019/05/19):
173+
# 通常使用的方法:
160174
echo "Current time: $(date +"%Y/%m/%d")"
161-
```
162-
163-
另一种方法:
164-
```shell
175+
# 另一种方法:
165176
suffix='Current time:'
166-
#和echo的用法差不多,注意如果换成单引号就不能替换变量了。
177+
# 注意如果换成单引号就不能替换变量了。
167178
date +"${suffix} %Y/%m/%d"
168179
```
169180

181+
### 注意
182+
183+
1. 该命令是`GNU coreutils`包中的命令,相关的帮助信息请查看`man -s 1 date``info coreutils 'date invocation'`
184+
170185
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.