Datetime 模块
定义
日期和时间进行操作的内置模块:time模块、datetime模块和calendar模块
Datetime模块常用的三个类 date time datetime
一个文件是一个模块,一个模块里面有多个类,一个类有多个方法
Date
定义
定义:class datetime.date(year, month, day)
常用的方法和属性
类方法/属性名称 | 描述 |
date.max | date对象所能表示的最大日期:9999-12-31 |
date.min | date对象所能表示的最小日期:00001-01-01 |
date.resolution | date对象表示的日期的最小单位:天 |
date.today() | 返回一个表示当前本地日期的date对象 |
date.fromtimestamp(timestamp) | 根据给定的时间戳,返回一个date对象 |
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)功能相同 |
import datetime as dt
>>> date = dt.date(2021,10,11)
>>> date.max
datetime.date(9999, 12, 31)
>>> date.min
datetime.date(1, 1, 1)
date.resolution
datetime.timedelta(days=1)
>>> date.today()
datetime.date(2021, 10, 11)
>>> date.year
2021
>>> date.month
10
>>> date.day
11
date.fromtimestamp(20190809)
datetime.date(1970, 8, 23)
>>> # 20190809/60/60/30/12
>>> date.replace(1789)
datetime.date(1789, 10, 11)
date.replace(1937,8,8)
datetime.date(1937, 8, 8)
>>> date.today()
datetime.date(2021, 10, 11)
>>> date.weekday()
0
>>> date.isoweekday()
1
Time
定义
class datetime.time(hour, minute, second, [microsecond[, tzinfo]]]])
常用的方法和属性
类方法/属性名称 | 描述 |
time.max | time类所能表示的最大时间:time(23, 59, 59, 999999) |
time.min | time类所能表示的最小时间:time(0, 0, 0, 0) |
time.resolution | 时间的最小单位,即两个不同时间的最小差值:1微秒 |
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)功能相同 |
>>> t.resolution
datetime.timedelta(microseconds=1)
>>> t.hour
14
>>> t.microsecond
0
>>> t.isoformat()
'14:29:59'
>>> t.replace(6,30,59)
datetime.time(6, 30, 59)
>>> t.strftime("%H_%M_%S")
'14_29_59'
Datetime
定义
class datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None)
date和time类的一个结合
常用方法和属性
类方法/属性名称 | 描述 |
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对象 |
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() | 生成并返回一个新的datetime对象,如果所有参数都没有指定,则返回一个与原datetime对象相同的对象 |
dt.timetuple() | 返回datetime对象对应的tuple(不包括tzinfo) |
dt.utctimetuple() | 返回datetime对象对应的utc时间的tuple(不包括tzinfo) |
dt.timestamp() | 返回datetime对象对应的时间戳,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) | 返回指定格式的时间字符串 |
Timedeltal
定义
class datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, hours=0, weeks=0)
timedelta对象表示两个不同时间之间的差值。可以对datetime.date, datetime.time和datetime.datetime对象做算术运算。
常用的方法
类方法/属性名称 | 描述 |
timedelta.min | timedelta(-999999999) |
timedelta.max | timedelta(days=999999999, hours=23, minutes=59, seconds=59, microseconds=999999) |
timedelta.resolution | timedelta(microseconds=1) |
td.days | 天 [-999999999, 999999999] |
td.seconds | 秒[0, 86399] |
td.microseconds | 微秒[0, 999999] |
td.total_seconds() | 时间差中包含的总秒数,等价于: td / timedelta(seconds=1) |
>>> import datetime
>>> dt = datetime.datetime
>>> a = dt.now()
>>> a
datetime.datetime(2021, 10, 11, 14, 59, 32, 304720)
>>> a+datetime.timedelta(3)
datetime.datetime(2021, 10, 14, 14, 59, 32, 304720)
>>> a+datetime.timedelta(-3)
datetime.datetime(2021, 10, 8, 14, 59, 32, 304720)
>>> a+datetime.timedelta(days=3,hours=3,seconds=10)#3天后,3个小时后,10秒后
datetime.datetime(2021, 10, 14, 17, 59, 42, 304720)