在 Python 中,time
模块和datetime
模块都与时间处理相关,但它们有着不同的特点和用途,以下为你详细介绍:
一.time
模块
- 概述:
time
模块提供了各种与时间相关的函数,它主要围绕着时间戳(从 1970 年 1 月 1 日 00:00:00 UTC 到某个时刻所经过的秒数)来进行操作,常用于获取当前时间、对时间进行简单的转换以及让程序暂停执行等场景。 - 常用函数及用法示例:
-
获取当前时间戳(time.time):
-
import time
# 获取当前时间的时间戳(以秒为单位)
t = time.time()
print(t)
-
将时间戳转换为本地时间的结构化表示(localtime):
import time
timestamp = time.time()
local_time = time.localtime(timestamp)
print(local_time)
#time.struct_time(tm_year=2024, tm_mon=11, tm_mday=19, tm_hour=19, tm_min=5, tm_sec=19, tm_wday=1, tm_yday=324, tm_isdst=0)
# 可以通过索引或者属性名来访问其具体元素,例如:
print(local_time.tm_year) # 输出年份
print(local_time[0]) # 同样输出年份
#获取当前不同形式的时间
print(time.time()) # 1970-1-1 00:00:00 到现在的秒数
print(time.localtime()) #获取当前时间
print(time.localtime().tm_year) #年月日
print(time.localtime().tm_mon)
print(time.localtime().tm_mday)
-
将结构化时间转换为时间戳(mktime):
import time
t = time.localtime()
print(t) #time.struct_time(tm_year=2024, tm_mon=11, tm_mday=19, tm_hour=19, tm_min=8, tm_sec=29, tm_wday=1, tm_yday=324, tm_isdst=0)
new_time = time.mktime(t)
print(new_time)#1732014509.0
-
格式化时间输出(类似于 C 语言中的
strftime
函数):
import time
t = time.localtime()
t = time.strftime('%Y-%m-%d %H:%M:%S',t)
print(t) #2024-11-19 19:11:10
-
让程序暂停执行(睡眠):
import time
print("程序开始")
time.sleep(5) # 让程序暂停5秒钟
print("程序继续执行,已经暂停了5秒")
二.datetime
模块
- 概述:
datetime
模块提供了更高级、面向对象的接口来处理日期和时间。它包含了多个类,比如datetime
类(用于表示某个特定的日期和时间点)、date
类(仅处理日期)、time
类(仅处理时间)以及timedelta
类(用于表示时间间隔)等,功能更为强大且使用起来更加方便灵活,适用于如日期时间的运算、格式化等复杂操作。 - 常用类及用法示例:
-
datetime
类:
-
from datetime import datetime
# 获取当前日期和时间
now = datetime.now()
print(now)
# 创建指定日期和时间的datetime对象
specific_date = datetime(2024, 11, 19, 10, 30, 0)
print(specific_date)
# 从datetime对象中提取具体的日期、时间信息
print(now.year)
print(now.month)
print(now.day)
print(now.hour)
print(now.minute)
print(now.second)
-
date
类:
from datetime import date
# 获取今天的日期
today = date.today()
print(today)
# 创建指定日期的date对象
specific_date = date(2024, 11, 19)
print(specific_date)
# 可以对日期进行一些比较操作等,例如:
another_date = date(2024, 11, 20)
print(today < another_date)
-
time
类:
from datetime import time
# 创建一个表示时间的time对象
specific_time = time(10, 30, 0)
print(specific_time)
# 可以获取其小时、分钟、秒等信息
print(specific_time.hour)
print(specific_time.minute)
print(specific_time.second)
-
timedelta
类(用于时间间隔计算):
from datetime import datetime, timedelta
now = datetime.now()
# 计算10天后的日期和时间
future_date = now + timedelta(days=10)
print(future_date)
# 计算3小时前的日期和时间
past_date = now - timedelta(hours=3)
print(past_date)
-
格式化输出:
from datetime import datetime
now = datetime.now()
formatted_now = now.strftime("%Y-%m-%d %H:%M:%S")
print(formatted_now)
和time
模块中的strftime
函数类似,不过这里是通过datetime
对象来调用该函数进行格式化输出,同样利用不同的格式化符号组合来满足不同的格式需求。
总的来说,time
模块相对基础、更偏向于底层的时间处理,围绕时间戳展开操作;而datetime
模块功能更强大全面,以面向对象的方式提供了更便捷的日期时间操作手段,在实际编程中可以根据具体的需求来选择使用哪个模块或者结合使用它们。