python中time与datetime模块如何转换?

time模块基于时间戳和struct_time,datetime模块面向对象;通过时间戳可实现两者互转:time转datetime用datetime.fromtimestamp(time.mktime(struct_time)),datetime转time用dt.timestamp()或dt.timetuple()。

在Python中,timedatetime 模块都用于处理时间,但它们的数据类型和使用方式略有不同。掌握它们之间的转换方法,有助于灵活处理时间数据。

time模块与datetime模块简介

time 模块主要基于时间戳(timestamp)操作,常用函数如 time.time()time.localtime() 返回的是 struct_time 对象。
datetime 模块更面向对象,常用类有 datetime.datetime,使用起来更直观。

从time转换为datetime

如果你有一个 time.struct_time 或时间戳,可以转为 datetime 对象:

  • 时间戳转 datetime:
    datetime.datetime.fromtimestamp(time.time())
  • struct_time 转 datetime:
    先用 time.mktime(t) 转为时间戳,再用 fromtimestamp()
    例如:
    dt = datetime.datetime.fromtimestamp(time.mktime(struct_time_obj))

从datetime转换为time

如果已有 datetime 对象,想转为 struct_time 或时间戳:

  • datetime 转时间戳:
    timestamp = dt.timestamp()time.mktime(dt.timetuple())
  • datetime 转 struct_time:
    dt.timetuple() 直接返回对应的 struct_time

实际例子

快速对照:

import time
import datetime

当前时间

now_struct = time.localtime() now_dt = datetime.datetime.now()

time → datetime

dt_from_time = datetime.datetime.fromtimestamp(time.mktime(now_struct))

datetime → time

timestamp_from_dt = now_dt.timestamp() struct_from_dt = now_dt.timetuple()

基本上就这些,关键是理解时间戳是桥梁,struct_time 和 datetime 可通过它互转。