# Python `time`模块

> 原文： [https://www.programiz.com/python-programming/time](https://www.programiz.com/python-programming/time)

#### 在本文中，我们将详细探讨时间模块。 通过示例，我们将学习使用在时间模块中定义的与时间相关的不同函数。

Python 有一个名为`time`的模块来处理与时间有关的任务。 要使用模块中定义的函数，我们需要首先导入模块。 这是如何做：

```py
import time
```

* * *

这是常用的时间相关函数。

### Python `time.time()`

`time()`函数返回自纪元以来经过的秒数。

对于 Unix 系统，在 **UTC** 处的`January 1, 1970, 00:00:00`是时代（时间开始的点）。

```py
import time
seconds = time.time()
print("Seconds since epoch =", seconds) 
```

* * *

### Python `time.ctime()`

`time.ctime()`函数从纪元起经过了几秒钟，并将其作为代表本地时间的字符串。

```py
import time

# seconds passed since epoch
seconds = 1545925769.9618232
local_time = time.ctime(seconds)
print("Local time:", local_time) 
```

如果运行该程序，输出将类似于：

```py
Local time: Thu Dec 27 15:49:29 2018
```

* * *

### Python `time.sleep()`

`sleep()`函数在给定的秒数内暂停（延迟）当前线程的执行。

```py
import time

print("This is printed immediately.")
time.sleep(2.4)
print("This is printed after 2.4 seconds.") 
```

要了解更多信息，请访问： [Python `sleep()`](/python-programming/time/sleep)。

* * *

在讨论其他与时间相关的函数之前，让我们简要探讨`time.struct_time`类。

* * *

## `time.struct_time`类别

`time`模块中的某些函数，例如`gmtime()`，`asctime()`等，都可以将`time.struct_time`对象作为参数或将其返回。

这是`time.struct_time`对象的示例。

```py
time.struct_time(tm_year=2018, tm_mon=12, tm_mday=27, 
                    tm_hour=6, tm_min=35, tm_sec=17, 
                    tm_wday=3, tm_yday=361, tm_isdst=0)

```

| 序号 | 属性 | 值 |
| --- | --- | --- |
| 0 | `tm_year` | 0000，....，2018，...，9999 |
| 1 | `tm_mon` | 1，2，...，12 |
| 2 | `tm_mday` | 1，2，...，31 |
| 3 | `tm_hour` | 0，1，...，23 |
| 4 | `tm_min` | 0，1，...，59 |
| 5 | `tm_sec` | 0，1，...，61 |
| 6 | `tm_wday` | 0，1，...，6；星期一是 0 |
| 7 | `tm_yday` | 1，2，...，366 |
| 8 | `tm_isdst` | 0、1 或 -1 |

可以使用索引和属性访问`time.struct_time`对象的值（元素）。

* * *

### Python `time.localtime()`

`localtime()`函数将自纪元以来经过的秒数作为参数，并在**当地时间**中返回`struct_time`。

```py
import time

result = time.localtime(1545925769)
print("result:", result)
print("\nyear:", result.tm_year)
print("tm_hour:", result.tm_hour) 
```

当您运行程序时，输出将类似于：

```py
result: time.struct_time(tm_year=2018, tm_mon=12, tm_mday=27, tm_hour=15, tm_min=49, tm_sec=29, tm_wday=3, tm_yday=361, tm_isdst=0)

year: 2018
tm_hour: 15 
```

如果没有参数或`None`传递给`localtime()`，则使用`time()`返回的值。

* * *

### Python `time.gmtime()`

`gmtime()`函数将自纪元以来经过的秒数作为参数，并在 **UTC** 中返回`struct_time`。

```py
import time

result = time.gmtime(1545925769)
print("result:", result)
print("\nyear:", result.tm_year)
print("tm_hour:", result.tm_hour) 
```

运行该程序时，输出为：

```py
result = time.struct_time(tm_year=2018, tm_mon=12, tm_mday=28, tm_hour=8, tm_min=44, tm_sec=4, tm_wday=4, tm_yday=362, tm_isdst=0)

year = 2018
tm_hour = 8 
```

如果没有参数或`None`传递给`gmtime()`，则使用`time()`返回的值。

* * *

### Python `time.mktime()`

`mktime()`函数将`struct_time`（或包含 9 个元素的元组，与`struct_time`对应的元组）作为参数，并返回自当地时间的纪元以来经过的秒数。 基本上，它是`localtime()`的反函数。

```py
import time

t = (2018, 12, 28, 8, 44, 4, 4, 362, 0)

local_time = time.mktime(t)
print("Local time:", local_time) 
```

* * *

下面的示例显示`mktime()`和`localtime()`之间的关系。

```py
import time

seconds = 1545925769

# returns struct_time
t = time.localtime(seconds)
print("t1: ", t)

# returns seconds from struct_time
s = time.mktime(t)
print("\s:", seconds) 
```

当您运行程序时，输出将类似于：

```py
t1:  time.struct_time(tm_year=2018, tm_mon=12, tm_mday=27, tm_hour=15, tm_min=49, tm_sec=29, tm_wday=3, tm_yday=361, tm_isdst=0)

s: 1545925769.0 
```

* * *

### Python `time.asctime()`

`asctime()`函数将`struct_time`（或包含 9 个与`struct_time`相对应的元素的元组）作为参数，并返回表示它的字符串。 这是一个例子：

```py
import time

t = (2018, 12, 28, 8, 44, 4, 4, 362, 0)

result = time.asctime(t)
print("Result:", result) 
```

当你运行程序时，输出将是：

```py
Result: Fri Dec 28 08:44:04 2018
```

* * *

### Python `time.strftime()`

`strftime()`函数将`struct_time`（或与其对应的元组）作为参数，并根据所使用的格式代码返回表示它的字符串。 例如，

```py
import time

named_tuple = time.localtime() # get struct_time
time_string = time.strftime("%m/%d/%Y, %H:%M:%S", named_tuple)

print(time_string) 
```

当您运行程序时，输出将类似于：

```py
12/28/2018, 09:47:41 
```

这里，`%Y`，`%m`，`%d`，`%H`等是格式代码。

*   `%Y` - 年`0001, ..., 2018, 2019, ..., 9999`
*   `%m` - 月`01, 02, ..., 11, 12`
*   `%d` - 天`01, 02, ..., 30, 31`
*   `%H` - 小时`00, 01, ..., 22, 23`
*   `%M` - 分钟`00, 01, ..., 58, 59`
*   `%S` - 秒`00, 01, ..., 58, 59`

要了解更多信息，请访问： [`time.strftime()`](https://docs.python.org/3/library/time.html#time.strftime)。

* * *

### Python `time.strptime()`

`strptime()`函数解析表示时间的字符串，然后返回`struct_time`。

```py
import time

time_string = "21 June, 2018"
result = time.strptime(time_string, "%d %B, %Y")

print(result) 
```

当你运行程序时，输出将是：

```py
time.struct_time(tm_year=2018, tm_mon=6, tm_mday=21, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=172, tm_isdst=-1) 
```