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

Python时间模块

  time 和 datetime 是 Python 中处理时间的两个重要模块,它们提供了不同的功能来处理时间相关的操作。

time模块

  time 模块主要提供与系统时间相关的基础功能,侧重于时间戳和简单的时间格式处理。

  • time.time():返回当前时间的时间戳(即从 1970 年 1 月 1 日至今的秒数)。
  • time.localtime([seconds]):可选参数seconds为时间戳,默认为当前时间。将给定的时间戳转换为本地时间的 struct_time 对象。
  • time.mktime(t):t 为struct_time 对象,将 struct_time 对象转换为时间戳(即自1970年1月1日至今的秒数)。
  • time.strptime(string[, format]):将指定格式format的时间字符串string解析为 struct_time 对象。
  • time.strftime(format[, t]):t 为struct_time 对象,将 struct_time 对象按指定格式format转变为时间字符串。
常用格式代码含义示例
%Y四位年份2023
%y两位年份23
%m月份 (01-12)07
%d日 (01-31)15
%H24小时制小时 (00-23)14
%I12小时制小时 (01-12)02
%M分钟 (00-59)30
%S秒 (00-59)45
%X等同于 %H:%M:%S(24小时制)14:30:45
%A完整星期名Monday
%a缩写星期名Mon
%B完整月份名July
%b缩写月份名Jul
%pAM/PMPM
  • time.struct_time 类:struct_time 是一个结构体类型,用于表示时间。它是 time 模块中的时间元组,包含 9 个时间属性。
属性名描述取值范围
tm_year如 2023
tm_mon1-12
tm_mday1-31
tm_hour0-23
tm_min0-59
tm_sec0-61 (60和61是闰秒)
tm_wday星期几0-6 (0是周一)
tm_yday一年中的第几天1-366
tm_isdst夏令时标志-1, 0, 1

转换关系

time.localtime
time.mktime
time.strftime
time.strptime
时间戳
struct_time
时间格式字符串

使用示例:

import time# 获取当前时间戳
timestamp = time.time()
print(timestamp)# 将时间戳转换为本地时间 struct_time对象
local_time = time.localtime(timestamp)
print(local_time)# 将当前时间的 struct_time 对象转换为时间戳
timestamp = time.mktime(time.localtime())
print(timestamp)# 将格式化字符串转换为 struct_time 对象
date_obj = time.strptime("2025-04-23 14:30:00", "%Y-%m-%d %X")
print(date_obj)# 将 struct_time 对象格式化为字符串
formatted_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
print(formatted_time)

datetime模块

  datetime 模块提供了更高级的时间和日期操作功能,可以创建和操作日期、时间对象。它支持时间加减、时区转换、格式化和解析等操作。

常见类:

  • datetime.date: 表示日期(年、月、日)
  • datetime.time: 表示时间(时、分、秒、微秒)
  • datetime.datetime: 表示日期和时间(年、月、日、时、分、秒、毫秒)
  • datetime.timedelta: 表示两个 datetime 对象之间的差值,用来进行时间的加减操作。
  • datetime.tzinfo: 处理时区信息(抽象基类)
构造方法
属性
常用方法
datedate(year, month, day)● year: 获取年份
● month: 获取月份
● day: 获取日
● replace(year, month, day):生成一个新的日期对象,用参数指定的年,月,日代替原有对象中的属性。(原有对象仍保持不变)
● timetuple():返回日期对应的time.struct_time对象;
● weekday():返回weekday,如果是星期一,返回0;如果是星期2,返回1,以此类推;
● isoweekday():返回星期数,如果是星期一,返回1;如果是星期2,返回2,以此类推;
● isoformat():返回格式如’YYYY-MM-DD’的字符串;
● strftime(format):将date对象转为format格式时间字符串。
● today():返回一个表示当前本地时间的date对象。
timetime(hour, minute, second, microsecond,tzinfo=None, *, fold=0)● hour: 获取小时
● minute: 获取分钟
● second: 获取秒
● microsecond: 获取微秒
● isoformat():返回格式如’%H:%M:%S’的字符串;
● strftime(format):将time对象转为format格式时间字符串。
datetimedatetime(year, month, day, hour, minute, second, microsecond,tzinfo=None, *, fold=0)同上● isoformat():返回格式如’YYYY-MM-DD %H:%M:%S’的字符串。
● strftime(format):将datetime对象转为format格式时间字符串。
● strptime(date_string, format):将格式字符串转换为datetime对象。
● now([tz]):返回一个表示当前本地时间的datetime对象,如果提供了参数tz,则获取tz参数所指时区的本地时间。
● today():返回一个表示当前本地时间的datetime对象。
● fromtimestamp(timestamp[, tz]):根据时间戮创建一个datetime对象,参数tz指定时区信息。
timedeltatimedelta(days, hours, minutes, seconds, microseconds,milliseconds,weeks)● days: 返回天数
● seconds: 返回秒数
● microseconds: 返回微秒数
tzinfotzinfo 是一个抽象基类,用于处理时区信息。用户可以继承该类实现时区功能,但标准库中的 datetime 模块并没有直接提供具体的时区类。pytz 库提供的时区类继承了tzinfo类并实现了时区相关的方法。
dt:datetime对象

● utcoffset(self, dt):返回与 UTC 的时差,返回一个 timedelta 对象。
● dst(self, dt):返回夏令时的时差,返回一个 timedelta 对象。
● tzname(self, dt):返回时区名称,通常是一个字符串。

参数补充说明——tzinfo:时区信息对象;fold:处理重复时间(夏令时),0或1

from datetime import *# date类
d = date(2021, 10, 26)
today = date.today()
print('d:', d, ', today:', today)               # d: 2021-10-26 , today: 2025-05-09
print(d.year,d.month,d.day)                    # 2021 10 26
print('weekday():', d.weekday())                 # weekday(): 1
print('isoweekday():', d.isoweekday())           # isoweekday(): 2
print('isoformat():', d.isoformat())             # isoformat(): 2021-10-26
print('strftime():', d.strftime("%Y-%m-%d"))     # strftime(): 2021-10-26# time类
t = time(14, 30, 15)  # 创建一个时间对象,表示14点30分15秒
print(t)             # 输出: 14:30:15
print(t.hour)        # 14
print(t.minute)      # 30
print(t.second)      # 45
print(t.microsecond) # 123456
print(t.isoformat())      # "14:30:45"
print(t.strftime("%H:%M")) # "14:30"# datetime类
dt = datetime(2023, 7, 15, 14, 30, 45, 123456)
print(dt.year)        # 2023
print(dt.month)       # 7
print(dt.day)         # 15
print(dt.hour)        # 14
print(dt.minute)      # 30
print(dt.second)      # 45
print(dt.microsecond) # 123456
print(dt.date())       # 获取date部分
print(dt.time())       # 获取time部分
print(dt.timestamp())  # 获取时间戳
print(dt.isoformat())  # "2023-07-15T14:30:45"
print(dt.strftime("%Y-%m-%d %H:%M:%S"))  # 自定义格式化
print(datetime.strptime('2022-03-21', "%Y-%m-%d"))
print(datetime.now())# timedelta类
dt = datetime.now()
dt_1 = dt + timedelta(days=-1)#昨天
dt_11 = dt - timedelta(days=1)#昨天
dt3 = dt + timedelta(days=1)#明天
dt_hour = dt + timedelta(hours=1) # tzinfo类
class BeijingTime(tzinfo):def utcoffset(self, dt):return timedelta(hours=8)def tzname(self, dt):return "Beijing Time"def dst(self, dt):return timedelta(0)
beijing_tz = BeijingTime()
dt = datetime(2023, 7, 15, 14, 30, 45, tzinfo=beijing_tz)
print(dt)  # 2023-07-15 14:30:45+08:00

相关文章:

  • PXE_Kickstart_无人值守自动化安装系统
  • 自动语音拨号系统V2.6.0产品说明书
  • BC12-字符金字塔
  • day21python打卡
  • HC-SR04超声波测距传感器
  • Block Styler——字符串控件
  • jetson orin nano super AI模型部署之路(十)使用frp配置内网穿透,随时随地ssh到机器
  • 含锡电镀废水深度净化技术体系解析化利用的全流程优化
  • 【C++贪心 位运算】B3930 烹饪问题|普及
  • Day20打卡-奇异值SVD分解
  • 2025年大模型RAG技术的实践总结
  • 解释器和基于规则的系统比较
  • 历史数据分析——北部湾港
  • (2025)图文解锁RAG从原理到实操
  • 当冲压焊接遇上Canopen到Profinet协议转换网关
  • 【XCP实战】AUTOSAR架构下XCP DAQ功能配置实现
  • 代码随想录算法训练营第三十七天
  • 学习黑客5 分钟深入浅出理解Linux Logs [特殊字符]
  • MD5 值是什么?为什么文件需要检验 MD5?
  • 手机银行怎么打印流水账单(已解决)
  • 重温经典|开播20周年,仙剑的那些幕后你知道吗?
  • 巴基斯坦军方:印度导弹袭击巴首都附近空军基地
  • 蔡达峰:推动食品安全法全面有效实施,为维护人民群众身体健康提供有力法治保障
  • 71岁导演詹姆斯・弗雷病逝,曾执导《纸牌屋》、麦当娜MV
  • 前4个月我国货物贸易进出口同比增长2.4%,增速较一季度加快1.1个百分点
  • 保证断电、碰撞等事故中车门系统能够开启!汽车车门把手将迎来强制性国家标准