Python日期和时间模块(datetime、time和calendar)
在 Python 中,时间相关的有日期和时间两部分,例如:
Python 中与日期和时间有关的模块有 datetime、time 和 calendar,下表列出了日期和时间模块的常用函数及其作用。
以下是使用 datetime 模块中几个函数的示例代码。
使用时间戳,任何两个时刻就可以比较大小了,时间也可以向前或向后推算。但是 Python 无法存储和表示 1970 年之前的时间。
以下是使用 time 和 calendar 模块中函数的示例代码。
程序执行结果中的 −8.0 表示东八区,即北京时间。
2023年9月29日10时30分20秒
它的前半部分是日期、后半部分是时间。编程语言通常会把日期和时间存储为数字形式,目的是实现两个时间的加、减运算。Python 中与日期和时间有关的模块有 datetime、time 和 calendar,下表列出了日期和时间模块的常用函数及其作用。
函数 | 作用 |
---|---|
datetime.now() | 获得系统当前日期和时间 |
datetime.date(t) | 获得datetime类型参数t的日期 |
datetime.time(t) | 获得datetime类型参数t的时间 |
datetime.timestamp(t) | 获得datetime类型参数t的时间戳 |
datetime.fromtimestamp(float) | 获得时间戳浮点数对应的时间 |
datetime.combine(d,t) | 将参数d和参数t提供的日期和时间合并成一个datetime类型的时间 |
time.time() | 返回浮点数格式的系统时间戳 |
time.localtime(t) | 获得时间戳参数t对应的当地时间 |
time.sleep(second) | 让当前程序休眠second秒 |
calendar.month(年份,月份) | 输出某年某月的日历 |
以下是使用 datetime 模块中几个函数的示例代码。
from datetime import datetime, date, time sysdate = datetime.now() print(sysdate) print("当前日期 %s" % datetime.date(sysdate)) print("当前时间 %s" % datetime.time(sysdate)) tmstmp = datetime.timestamp(sysdate) print("当前时间戳 %s" % tmstmp) anhourago = datetime.fromtimestamp(tmstmp - 3600) print("一小时前的时间是 %s" % anhourago) date1 = date(2022,5,1) time1 = time(11,30,10) print(datetime.combine(date1,time1))程序执行结果如下:
2022-03-16 10:01:19.722046
当前日期 2022-03-16
当前时间 10:01:19.722046
当前时间戳 1647396079.722046
一小时前的时间是 2022-03-16 09:01:19.722046
2022-05-01 11:30:10
使用时间戳,任何两个时刻就可以比较大小了,时间也可以向前或向后推算。但是 Python 无法存储和表示 1970 年之前的时间。
以下是使用 time 和 calendar 模块中函数的示例代码。
import time import calendar t = time.time() t = t + 1000 print("当前计算机时间一千秒后的时间戳是:", t) print("当前系统时区:", time.timezone / 3600) cal = calendar.month(2020, 5) print ("输出2020年5月的日历:") print (cal)程序执行结果如下:
当前计算机时间一千秒后的时间戳是: 1600577816.1849868 当前系统时区:-8.0 输出2020年5月的日历: May 2020 Mo Tu We Th Fr Sa Su 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31计算机中使用的时间还包括时区信息,上面代码中 time.timezone 不是一个函数,而是一个变量,它存储了当前计算机所在时区和标准时区之间相差的时间(单位为秒),其数值小于 0 表示东部时区(例如大部分欧洲、亚洲、非洲地区),数值大于 0 表示美洲时区。
程序执行结果中的 −8.0 表示东八区,即北京时间。