当前位置:首页 > Python > 正文

Python时间戳转日期时间教程 - 完整指南与示例

Python时间戳转日期时间完整教程

学习使用time和datetime模块处理时间戳转换、格式化和时区处理

什么是时间戳?

时间戳(Timestamp)是计算机中表示时间的一种方式,指从某个特定时间点(通常是1970年1月1日00:00:00 UTC)开始所经过的秒数(或毫秒数)。这种表示方式在编程、数据库和系统日志中非常常见。

关键点: Unix时间戳通常以秒为单位,而JavaScript时间戳通常以毫秒为单位。在Python中,我们主要处理以秒为单位的时间戳。

Python时间处理模块

Python有两个主要的时间处理模块:

time 模块

提供基础时间函数,适用于简单的时间戳转换和获取当前时间戳。

  • 处理时间戳
  • 获取当前时间
  • 简单格式化
datetime 模块

提供更高级的日期时间处理功能,支持日期计算、时区处理和更灵活的格式化。

  • 日期时间对象
  • 时区支持
  • 日期计算
  • 高级格式化

使用time模块转换时间戳

time模块提供了localtime()gmtime()函数,可以将时间戳转换为struct_time对象,然后使用strftime()进行格式化。

import time

# 获取当前时间戳 current_timestamp = time.time() print("当前时间戳:", current_timestamp)
# 将时间戳转换为本地时间的struct_time local_time = time.localtime(current_timestamp)
# 将struct_time格式化为字符串 formatted_time = time.strftime("%Y-%m-%d %H:%M:%S", local_time) print("本地时间:", formatted_time)
# 转换为UTC时间 utc_time = time.gmtime(current_timestamp) utc_formatted = time.strftime("%Y-%m-%d %H:%M:%S UTC", utc_time) print("UTC时间:", utc_formatted)

提示: time模块适用于简单的转换,但对于需要日期计算或时区处理的情况,建议使用datetime模块。

使用datetime模块转换时间戳

datetime模块提供了更强大和灵活的时间处理能力。使用datetime.fromtimestamp()可以将时间戳转换为本地时间的datetime对象。

from datetime import datetime

# 获取当前时间戳 timestamp = 1723968000 # 示例时间戳
# 转换为本地时间 local_dt = datetime.fromtimestamp(timestamp) print("本地时间:", local_dt)
# 转换为UTC时间 utc_dt = datetime.utcfromtimestamp(timestamp) print("UTC时间:", utc_dt)
# 自定义格式化 formatted = local_dt.strftime("%Y年%m月%d日 %H时%M分%S秒") print("格式化时间:", formatted)
# 包含星期几 with_weekday = local_dt.strftime("%A, %B %d, %Y %I:%M:%S %p") print("带星期:", with_weekday)

注意: 当处理历史时间或需要精确时区信息时,建议使用pytz库或Python 3.9+的zoneinfo模块进行时区处理。

时间戳转换工具

时间戳转换演示

时间格式化代码参考

使用strftime()方法时,可以使用以下格式化代码:

%Y - 四位数的年份(例如:2023) %y - 两位数的年份(例如:23) %m - 两位数的月份(01-12) %d - 两位数的日期(01-31) %H - 24小时制的小时(00-23) %I - 12小时制的小时(01-12) %M - 分钟(00-59) %S - 秒(00-59) %A - 完整的星期名称(例如:Monday) %a - 简写的星期名称(例如:Mon) %B - 完整的月份名称(例如:January) %b - 简写的月份名称(例如:Jan) %p - AM/PM 指示符 %Z - 时区名称

处理毫秒级时间戳

有时时间戳是以毫秒为单位的(特别是在JavaScript中),转换时需要除以1000:

js_timestamp = 1723968123456 # JavaScript中的毫秒时间戳
# 转换为秒 python_timestamp = js_timestamp / 1000.0
# 然后使用datetime转换 dt = datetime.fromtimestamp(python_timestamp) print(dt.strftime("%Y-%m-%d %H:%M:%S.%f")[:-3]) # 保留毫秒部分

最佳实践: 在处理时间戳时,始终记录时间戳的单位(秒还是毫秒)和时区信息,这是避免时间计算错误的关键。

Python时间戳转换教程 © 2023 - 掌握时间处理,提升编程效率

发表评论