如何使用 date 命令
date 日期 时间
![](/data/attachment/album/201801/08/143129e4bb6m02da6abbhi.jpg)


在本文中, 我们会通过一些案例来演示如何使用 Linux 中的 `date` 命令。`date` 命令可以用户输出/设置系统日期和时间。 `date` 命令很简单, 请参见下面的例子和语法。


默认情况下，当不带任何参数运行 `date` 命令时，它会输出当前系统日期和时间：



```
$ date
Sat  2 Dec 12:34:12 CST 2017

```

### 语法



```
Usage: date [OPTION]... [+FORMAT]
  or:  date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
以给定格式显示当前时间，或设置系统时间。

```

### 案例


下面这些案例会向你演示如何使用 `date` 命令来查看前后一段时间的日期时间。


#### 1、 查找 5 周后的日期



```
date -d "5 weeks"
Sun Jan  7 19:53:50 CST 2018

```

#### 2、 查找 5 周后又过 4 天的日期



```
date -d "5 weeks 4 days"
Thu Jan 11 19:55:35 CST 2018

```

#### 3、 获取下个月的日期



```
date -d "next month"
Wed Jan  3 19:57:43 CST 2018

```

#### 4、 获取下周日的日期



```
date -d last-sunday
Sun Nov 26 00:00:00 CST 2017

```

`date` 命令还有很多格式化相关的选项, 下面的例子向你演示如何格式化 `date` 命令的输出.


#### 5、 以 `yyyy-mm-dd` 的格式显示日期



```
date +"%F"
2017-12-03

```

#### 6、 以 `mm/dd/yyyy` 的格式显示日期



```
date +"%m/%d/%Y"
12/03/2017

```

#### 7、 只显示时间



```
date +"%T"
20:07:04

```

#### 8、 显示今天是一年中的第几天



```
date +"%j"
337

```

#### 9、 与格式化相关的选项




| 格式 | 说明 |
| --- | --- |
| `%%` | 显示百分号 （`%`）。 |
| `%a` | 星期的缩写形式 （如： `Sun`）。 |
| `%A` | 星期的完整形式 （如： `Sunday`）。 |
| `%b` | 缩写的月份 （如： `Jan`）。 |
| `%B` | 当前区域的月份全称 （如： `January`）。 |
| `%c` | 日期以及时间 （如： `Thu Mar 3 23:05:25 2005`）。 |
| `%C` | 当前世纪；类似 `%Y`， 但是会省略最后两位 （如： `20`）。 |
| `%d` | 月中的第几日 （如： `01`）。 |
| `%D` | 日期；效果与 `%m/%d/%y` 一样。 |
| `%e` | 月中的第几日， 会填充空格；与 `%_d` 一样。 |
| `%F` | 完整的日期；跟 `%Y-%m-%d` 一样。 |
| `%g` | 年份的后两位 （参见 `%G`）。 |
| `%G` | 年份 （参见 `%V`）；通常跟 `%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` | 制表符。 |
| `%T` | 时间；同 `%H:%M:%S`。 |
| `%u` | 星期 （`1`..`7`）；1 表示 `星期一`。 |
| `%U` | 一年中的第几个星期，以周日为一周的开始 （`00`..`53`）。 |
| `%V` | 一年中的第几个星期，以周一为一周的开始 （`01`..`53`）。 |
| `%w` | 用数字表示周几 （`0`..`6`）； 0 表示 `周日`。 |
| `%W` | 一年中的第几个星期， 周一为一周的开始 （`00`..`53`）。 |
| `%x` | 当前区域的日期表示（如： `12/31/99`）。 |
| `%X` | 当前区域的时间表示 （如： `23:13:48`）。 |
| `%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`）。 |


#### 10、 设置系统时间


你也可以使用 `date` 来手工设置系统时间，方法是使用 `--set` 选项, 下面的例子会将系统时间设置成 2017 年 8 月 30 日下午 4 点 22 分。



```
date --set="20170830 16:22"

```

当然, 如果你使用的是我们的 [VPS 托管服务](https://www.rosehosting.com/hosting-services.html)，你总是可以联系并咨询我们的 Linux 专家管理员（通过客服电话或者下工单的方式）关于 `date` 命令的任何东西。他们是 24×7 在线的，会立即向您提供帮助。（LCTT 译注：原文的广告~）


PS. 如果你喜欢这篇帖子，请点击下面的按钮分享或者留言。谢谢。




---


via: <https://www.rosehosting.com/blog/use-the-date-command-in-linux/>


作者：[rosehosting](https://www.rosehosting.com) 译者：[lujun9972](https://github.com/lujun9972) 校对：[wxy](https://github.com/wxy)


本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


OK
In this post, we will show you some examples on how to use the date command in Linux. The date command in Linux can be used to print or set the system date and time. Using the Date Command in Linux its simple, just follow the examples and the syntax below. Let’s get started.


By default when running the date command in Linux, without any arguments it will display the current system date and time:

`date`


`Sat 2 Dec 12:34:12 CST 2017`


#### Syntax

```
Usage: date [OPTION]... [+FORMAT]
or: date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
Display the current time in the given FORMAT, or set the system date.
```


### Date examples

The following examples will show you how to use the date command to find the date and time from a period of time in the past or future.

Table of Contents

## 1. Find the date 5 weeks in the future

```
date -d "5 weeks"
Sun Jan 7 19:53:50 CST 2018
```


## 2. Find the date 5 weeks and 4 days in the future

```
date -d "5 weeks 4 days"
Thu Jan 11 19:55:35 CST 2018
```


## 3. Get the next month date

```
date -d "next month"
Wed Jan 3 19:57:43 CST 2018
```


## 4. Get the last sunday date

```
date -d last-sunday
Sun Nov 26 00:00:00 CST 2017
```


The date command comes with various formatting option, the following examples will show you how to format the date command output.

## 5. Display the date in yyyy-mm-dd format

```
date +"%F"
2017-12-03
```


## 6. Display date in mm/dd/yyyy format

```
date +"%m/%d/%Y"
12/03/2017
```


## 7. Display only the time

```
date +"%T"
20:07:04
```


## 8. Display the day of the year

```
date +"%j"
337
```


## 9. Formatting Options

%% |
A literal percent sign (“%“). |

%a |
The abbreviated weekday name (e.g., Sun). |

%A |
The full weekday name (e.g., Sunday). |

%b |
The abbreviated month name (e.g., Jan). |

%B |
Locale’s full month name (e.g., January). |

%c |
The date and time (e.g., Thu Mar 3 23:05:25 2005). |

%C |
The current century; like %Y, except omit last two digits (e.g., 20). |

%d |
Day of month (e.g., 01). |

%D |
Date; same as %m/%d/%y. |

%e |
Day of month, space padded; same as %_d. |

%F |
Full date; same as %Y-%m-%d. |

%g |
Last two digits of year of ISO week number (see %G). |

%G |
Year of ISO week number (see %V); normally useful only with %V. |

%h |
Same as %b. |

%H |
Hour (00..23). |

%I |
Hour (01..12). |

%j |
Day of year (001..366). |

%k |
Hour, space padded ( 0..23); same as %_H. |

%l |
Hour, space padded ( 1..12); same as %_I. |

%m |
Month (01..12). |

%M |
Minute (00..59). |

%n |
A newline. |

%N |
Nanoseconds (000000000..999999999). |

%p |
Locale’s equivalent of either AM or PM; blank if not known. |

%P |
Like %p, but lower case. |

%r |
Locale’s 12-hour clock time (e.g., 11:11:04 PM). |

%R |
24-hour hour and minute; same as %H:%M. |

%s |
Seconds since 1970-01-01 00:00:00 UTC. |

%S |
Second (00..60). |

%t |
A tab. |

%T |
Time; same as %H:%M:%S. |

%u |
Day of week (1..7); 1 is Monday. |

%U |
Week number of year, with Sunday as first day of week (00..53). |

%V |
ISO week number, with Monday as first day of week (01..53). |

%w |
Day of week (0..6); 0 is Sunday. |

%W |
Week number of year, with Monday as first day of week (00..53). |

%x |
Locale’s date representation (e.g., 12/31/99). |

%X |
Locale’s time representation (e.g., 23:13:48). |

%y |
Last two digits of year (00..99). |

%Y |
Year. |

%z |
+hhmm numeric time zone (e.g., -0400). |

%:z |
+hh:mm numeric time zone (e.g., -04:00). |

%::z |
+hh:mm:ss numeric time zone (e.g., -04:00:00). |

%:::z |
Numeric time zone with “:” to necessary precision (e.g., -04, +05:30). |

%Z |
Alphabetic time zone abbreviation (e.g., EDT). |



## 10. Set the system clock

With the date command in Linux, you can also manually set the system clock using the `--set`

switch, in the following example we will set the system date to 4:22pm August 30, 2017

```
date --set="20170830 16:22"
```


### See Also – [Find Large Files in Linux](https://www.rosehosting.com/blog/find-large-files-linux/)

Of course, if you use one of our [VPS Hosting services](https://www.rosehosting.com/hosting-services.html), you can always contact and ask our expert Linux admins (via chat or ticket) about date command in linux and anything related to date examples on Linux. They are available 24×7 and will provide information or assistance immediately.

**PS.** If you liked this post on How to Use the Date Command in Linux please share it with your friends on the social networks using the buttons below or simply leave a reply. Thanks.