python datetime模块

模块介绍

datetime模块为python标准库的一个模块,该模块提供了对时间和日期进行操作的功能。datatime模块通过date类、time类、datetime类、timedelta类、timezone类等来获取或者操作时间、日期。

在python中,有三个标准模块可以对时间和日期进行操作,分别是time模块、datetime模块、calendar模块。其中time模块是通过调用C库实现的,所以有些方法在某些平台上可能无法调用,但是其提供的大部分接口与C标准库time.h基本一致。与time模块相比,datetime模块提供的接口更直观、易用,功能也更加强大。

相关术语

timestamp(时间戳) 也称为Unix时间 或 POSIX时间;它是一种时间表示方式,表示从格林尼治时间1970年1月1日0时0分0秒开始到现在所经过的毫秒数,其值为float类型。 但是有些编程语言的相关方法返回的是秒数(Python就是这样),这个需要看方法的文档说明。需要说明的是时间戳是个差值,其值与时区无关。

epoch time 表示时间开始的起点;它是一个特定的时间,不同平台上这个时间点的值不太相同,对于Unix而言,epoch time为 1970-01-01 00:00:00 UTC。

UTC time Coordinated Universal Time,世界协调时,又称 格林尼治天文时间、世界标准时间。与UTC time对应的是各个时区的local time,东N区的时间比UTC时间早N个小时,因此UTC time + N小时 即为东N区的本地时间;而西N区时间比UTC时间晚N个小时,即 UTC time - N小时 即为西N区的本地时间; 中国在东8区,因此比UTC时间早8小时,可以以UTC+8进行表示。

模块方法

1、date类
date类属性、方法:
类方法/属性描述
date.today()返回一个表示当前本地日期的date对象
date.fromtimestamp()根据跟定的时间戳,返回一个date对象
date.maxdate对象所能表示的最大日期:9999-12-31
date.mindate对象所能表示的最小日志:00001-01-01
date.resoluationdate对象表示的日期的最小单位:天
date对象属性、方法:

d = datetime.date.today()

对象方法/属性描述
d.year
d.month
d.day
d.replace(year[, month[, day]])生成并返回一个新的日期对象,原日期对象不变
d.timetuple()返回日期对应的time.struct_time对象
d.toordinal()返回日期是是自 0001-01-01 开始的第多少天
d.weekday()返回日期是星期几,[0, 6],0表示星期一
d.isoweekday()返回日期是星期几,[1, 7], 1表示星期一
d.isocalendar()返回一个元组,格式为:(year, weekday, isoweekday)
d.isoformat()返回‘YYYY-MM-DD’格式的日期字符串
d.strftime(format)返回指定格式的日期字符串,与time模块的strftime(format, struct_time)功能相同
2、time类
time类方法/属性
类方法/属性描述
time.maxtime类所能表示的最大时间:time(23, 59, 59, 999999)
time.mintime类所能表示的最小时间:time(0, 0, 0, 0)
time.resolution时间的最小单位,即两个不同时间的最小差值:1微秒
time对象方法/属性

t = datetime.time.(hour, [minute[, second, [microsecond[, tzinfo]]]])

对象方法/属性描述
t.hour
t.minute
t.second
t.microsecond微秒
t.tzinfo返回传递给time构造方法的tzinfo对象,如果该参数未给出,则返回None
t.replace(hour[, minute[, second[, microsecond[, tzinfo]]]])生成并返回一个新的时间对象,原时间对象不变
t.isoformat()返回一个‘HH:MM:SS.%f’格式的时间字符串
t.strftime()返回指定格式的时间字符串,与time模块的strftime(format, struct_time)功能相同
3、datetime类
datetime类方法/属性
类方法/属性描述
datetime.today()返回一个表示当前本期日期时间的datetime对象
datetime.now([tz])返回指定时区日期时间的datetime对象,如果不指定tz参数则结果同上
datetime.utcnow()返回当前utc日期时间的datetime对象
datetime.fromtimestamp(timestamp[, tz])根据指定的时间戳创建一个datetime对象
datetime.utcfromtimestamp(timestamp)根据指定的时间戳创建一个datetime对象
datetime.combine(date, time)把指定的date和time对象整合成一个datetime对象
datetime.strptime(date_str, format)将时间字符串转换为datetime对象
datetime对象方法/属性

dt = datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None)

对象方法/属性描述
dt.year, dt.month, dt.day年、月、日
dt.hour, dt.minute, dt.second时、分、秒
dt.microsecond, dt.tzinfo微秒、时区信息
dt.date()获取datetime对象对应的date对象
dt.time()获取datetime对象对应的time对象, tzinfo 为None
dt.timetz()获取datetime对象对应的time对象,tzinfo与datetime对象的tzinfo相同
dt.replace([year[, month[, day[, hour[, minute[, second[, microsecond[, tzinfo]]]]]]]])生成并返回一个新的datetime对象,如果所有参数都没有指定,则返回一个与原datetime对象相同的对象
dt.timetuple()返回datetime对象对应的tuple(不包括tzinfo)
dt.utctimetuple()返回datetime对象对应的utc时间的tuple(不包括tzinfo)
dt.timestamp()返回datetime对象对应的时间戳,返回值是一个类似time.time()返回的浮点型值。需要注释的是,该方法是Python 3.3才新增的
dt.toordinal()同date对象
dt.weekday()同date对象
dt.isocalendar()同date对象
dt.isoformat([sep])返回一个‘%Y-%m-%d
dt.ctime()等价于time模块的time.ctime(time.mktime(d.timetuple()))
dt.strftime(format)返回指定格式的时间字符串
4、timedelta类

timedelta对象表示连个不同时间之间的差值。如果使用time模块对时间进行算术运行,只能将字符串格式的时间 和 struct_time格式的时间对象 先转换为时间戳格式,然后对该时间戳加上或减去n秒,最后再转换回struct_time格式或字符串格式,这显然很不方便。而datetime模块提供的timedelta类可以让我们很方面的对datetime.date, datetime.time和datetime.datetime对象做算术运算,且两个时间之间的差值单位也更加容易控制。

timedelta类方法/属性
类方法/属性描述
timedelta.mintimedelta(-999999999)
timedelta.maxtimedelta(days=999999999, hours=23, minutes=59, seconds=59, microseconds=999999)
timedelta.resolutiontimedelta(microseconds=1)
timedelta对象方法/属性

td = datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, hours=0, weeks=0)

对象方法/属性描述
td.days天 [-999999999, 999999999]
td.seconds秒 [0, 86399]
td.microseconds微秒 [0, 999999]
td.total_seconds()时间差中包含的总秒数,等价于: td / timedelta(seconds=1)
>>> import datetime
>>>
>>> datetime.timedelta(365).total_seconds()  # 一年包含的总秒数
31536000.0
>>> dt = datetime.datetime.now()
>>> dt + datetime.timedelta(3)  # 3天后
datetime.datetime(2017, 2, 8, 9, 39, 40, 102821)
>>> dt + datetime.timedelta(-3)  # 3天前
datetime.datetime(2017, 2, 2, 9, 39, 40, 102821)
>>> dt + datetime.timedelta(hours=3)  # 3小时后
datetime.datetime(2017, 2, 5, 12, 39, 40, 102821)
>>> dt + datetime.timedelta(hours=-3)  # 3小时前
datetime.datetime(2017, 2, 5, 6, 39, 40, 102821)
>>> dt + datetime.timedelta(hours=3, seconds=30)  # 3小时30秒后  
datetime.datetime(2017, 2, 5, 12, 40, 10, 102821)

模块使用

使用import datetime导入相关模块。

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不负韶华ღ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值