原文: https://www.programiz.com/python-programming/time

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

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

  1. import time

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

Python time.time()

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

对于 Unix 系统,在 UTC 处的January 1, 1970, 00:00:00是时代(时间开始的点)。

  1. import time
  2. seconds = time.time()
  3. print("Seconds since epoch =", seconds)

Python time.ctime()

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

  1. import time
  2. # seconds passed since epoch
  3. seconds = 1545925769.9618232
  4. local_time = time.ctime(seconds)
  5. print("Local time:", local_time)

如果运行该程序,输出将类似于:

  1. Local time: Thu Dec 27 15:49:29 2018

Python time.sleep()

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

  1. import time
  2. print("This is printed immediately.")
  3. time.sleep(2.4)
  4. print("This is printed after 2.4 seconds.")

要了解更多信息,请访问: Python sleep()


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


time.struct_time类别

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

这是time.struct_time对象的示例。

  1. time.struct_time(tm_year=2018, tm_mon=12, tm_mday=27,
  2. tm_hour=6, tm_min=35, tm_sec=17,
  3. 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

  1. import time
  2. result = time.localtime(1545925769)
  3. print("result:", result)
  4. print("\nyear:", result.tm_year)
  5. print("tm_hour:", result.tm_hour)

当您运行程序时,输出将类似于:

  1. 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)
  2. year: 2018
  3. tm_hour: 15

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


Python time.gmtime()

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

  1. import time
  2. result = time.gmtime(1545925769)
  3. print("result:", result)
  4. print("\nyear:", result.tm_year)
  5. print("tm_hour:", result.tm_hour)

运行该程序时,输出为:

  1. 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)
  2. year = 2018
  3. tm_hour = 8

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


Python time.mktime()

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

  1. import time
  2. t = (2018, 12, 28, 8, 44, 4, 4, 362, 0)
  3. local_time = time.mktime(t)
  4. print("Local time:", local_time)

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

  1. import time
  2. seconds = 1545925769
  3. # returns struct_time
  4. t = time.localtime(seconds)
  5. print("t1: ", t)
  6. # returns seconds from struct_time
  7. s = time.mktime(t)
  8. print("\s:", seconds)

当您运行程序时,输出将类似于:

  1. 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)
  2. s: 1545925769.0

Python time.asctime()

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

  1. import time
  2. t = (2018, 12, 28, 8, 44, 4, 4, 362, 0)
  3. result = time.asctime(t)
  4. print("Result:", result)

当你运行程序时,输出将是:

  1. Result: Fri Dec 28 08:44:04 2018

Python time.strftime()

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

  1. import time
  2. named_tuple = time.localtime() # get struct_time
  3. time_string = time.strftime("%m/%d/%Y, %H:%M:%S", named_tuple)
  4. print(time_string)

当您运行程序时,输出将类似于:

  1. 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()


Python time.strptime()

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

  1. import time
  2. time_string = "21 June, 2018"
  3. result = time.strptime(time_string, "%d %B, %Y")
  4. print(result)

当你运行程序时,输出将是:

  1. 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)