QZQ的小世界!

  • 首页
你好!
这里是QZQ的博客站!
  1. 首页
  2. 未分类
  3. 正文

python 的时间模块 Time&datetime

2025年4月4日 145点热度 0人点赞 0条评论

Time

Python时间有三种格式

  • format_time,特定格式的字符串,比如 '2017-03-16 18:22:06'

  • struct_time,是一个类 ,可以从该类衍生出其余两种Time对象

  • time_stamp,1970 年 1 月 1 日到现在的秒数

Untitled.png

Fucntion

time.strptime()
strptime 应该是 string parse time 的缩写,strptime(format_time, format) -> struct_time。
其中format是 "%Y-%m-%d %H:%M:%S" ,当然需要根据实际需要format的字符串进行更改

time.strftime()
strftime 是 String format time 的缩写,这个方法需要两个参数,其中一个是format,同上。第二个参数可选,默认为 time.localtime() 的返回值,也就是stuct_time。该方法返回format_time,一个特定字符串。

time.mktime()
传入struct.time,返回时间戳

获取当前时间的三种办法

time.time() # 返回当前时间戳,是秒级别的(秒 <- 1000毫秒 <- 1000000微秒)
time.ctime() # 返回当前时间的字符串,格式为‘Thu Mar 24 22:06:03 2022’
time.gmtime() # 获取当前的struct_time

Datetime

Datetime模块用于是date和time模块的合集,一般来说处理问题优先使用该模块,因为功能会更强大。
该模块下常用的有四个类,分别为:

  • datetime.date: 表示日期,常用的属性有year、month和day

  • datetime.time: 表示时间,常用的属性有hour、minute、second和microsecond

  • datetime.datetime: 表示日期时间

  • datetime.timedelta: 表示两个date、time和datetime实例之间的时间间隔,最小单位可达微秒

创建datetime对象的方法

# 使用datetime类直接生成
# 可以看出该类接受一系列数字为初始参数,分别对应年,月,日,小时...
d = datetime.datetime(2020, 3, 18, 20, 15, 20, 300)

# 附加时区属性
d = datetime.datetime(2020, 3, 18, tzinfo=datetime.timezone.utc)

# 根据时间戳返回一个datetime对象
datetime.fromtimestamp(time.time())

时区转化

datetime对象自带一个replace方法,可以实现时区转化

datetime.datetime(2022,10,23).replace(tzinfo=timezone.utc)

时间计算

from dateutil.parser import parse

# a的返回值等同于 datetime.datetime(2017, 10, 1, 12, 12, 12)
a = parse('2017-10-01/12:12:12')
b = parse('2013-3-4/10:10:10')

(a-b).days
(a-b).seconds

也就是说,两个datetime类是可以做差运算的。不仅是datetime类别可以相互运算,datetime也可以与timedelta进行相互运算:

import datetime
a=datetime.datetime.now()+datetime.timedelta(days=1) b=datetime.datetime.now()+datetime.timedelta(days=-1)

不过timedelta的单位支持比较小,最多也只能到days,最小可以达到microseconds等级别。实际运用中不需要这么小的单位,此时可以使用dateutil.relativedelta模块

import datetime
from dateutil.relativedelta import relativedelta
d = datetime.datetime.now()
print(d) # 2020-04-24 23:24:31.010775
print((d - relativedelta(years=1)).strftime('%Y%m%d')) # 20210424

附录

格式化符号

  • %y 两位数的年份表示(00-99)

  • %Y 四位数的年份表示(000-9999)

  • %m 月份(01-12)

  • %d 月内中的一天(0-31)

  • %H 24小时制小时数(0-23)

  • %I 12小时制小时数(01-12)

  • %M 分钟数(00-59)

  • %S 秒(00-59)

  • %a 本地简化星期名称

  • %A 本地完整星期名称

  • %b 本地简化的月份名称

  • %B 本地完整的月份名称

  • %c 本地相应的日期表示和时间表示

  • %j 年内的一天(001-366)

  • %p 本地A.M.或P.M.的等价符

  • %U 一年中的星期数(00-53)星期天为星期的开始

  • %w 星期(0-6),星期天为星期的开始

  • %W 一年中的星期数(00-53)星期一为星期的开始

  • %x 本地相应的日期表示

  • %X 本地相应的时间表示

  • %Z 当前时区的名称

[文章导入自 http://qzq-go.notion.site/37f29907540a42b1b129829d6a8895fa 访问原文获取高清图片]

本作品采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可
标签: IT技术 Python Python库介绍 Python标准库
最后更新:2025年4月3日

QZQ

一只涉猎广泛的技术爱好者,绝赞养猫中~

点赞
< 上一篇
下一篇 >

归档

  • 2025 年 4 月
  • 2025 年 3 月
  • 2025 年 2 月
  • 2025 年 1 月
  • 2024 年 12 月
  • 2024 年 11 月

分类

  • 技术
  • 未分类

COPYRIGHT © 2024 QZQ的小世界!. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang