datetime模块提供了datetime和timedelta两个内置类,前者表示日期时间,后者表示一个时间段的长度。两个datetime对象相减,即可得到一个timedelta对象。两个timedelta对象,或datetime对象和timedelta对象,可以做加减运算

一.datetime类

Datetime类是一个包含来自date对象和time对象所有信息的单一对象。datetime类提供的以下方法可以直接调用,无序实例化

  • now():返回当前的本地datetime对象
  • utcnow():返回当前UTC(协调世界时)日期时间
  • fromtimestamp(timestamp, tz=None):将时间戳转为datetime类型的时间,tz为时区参数
  • strptime(date_string, format):将日期时间字符串按照format指定的格式解析生成datetime类型的时间
    以下的方法只有datetime类实例化以后才可以使用
  • date():返回具有同样year、month和day值的date对象
  • time():返回具有同样hour、minute、second、microsecond值的time对象
  • timetuple():返回一个time.struct_time类型的日期时间对象
  • toordinal():返回日期的格里高利历序号
  • timestamp():返回时间戳
  • weekday():返回一个代表星期几的整数,星期一位0,星期日为6
  • isoweekday():返回一个代表星期几的整数,星期一为1,星期日为7
  • ctime():返回一个代表日期和时间的字符串
  • strftime(format):返回一个由显式格式字符串所指明的代表日期和时间的字符串
from datetime import datetime
# 获取当前本地时间
datetime.now()
# 实例化datetime对象
datetime(2020, 1, 1, 0, 0, 0)
# 字符串转datetime对象
datetime.fromisoformat('2020-04-06 10:20:30')
# 字符串转datetime对象
datetime.strptime('20201010', '%Y%m%d')
# 获取当前UTC时间
dt = datetime.utcnow()
# 返回time.struct_time对象
dt.timetuple()
# 返回datetime对象的时间戳
dt.timestamp()
# 返回一个代表星期几的整数,星期一为1,星期日为7
dt.isoweekday()
# 返回一个代表星期几的整数, 星期一位0,星期日为6
dt.weekday()
# 返回日期时间字符串
dt.strftime('%Y-%m-%d %X')

二.timedelta类

timedelta类用来描述一段时间,如链各个日期或时间点之间的时间间隔。timedelta对象之间,以及timedelta对象和datetime对象之间可以做加减运算。创建datetime.timedelta对象可以使用下列参数中的一个或多个指定时间段长度。若使用了多个参数,时间段长度为多个参数之和。

  • weeks:周数
  • days:天数(默认)
  • hours:小时数
  • minutes:分钟数
  • seconds:秒数
  • microseconds:微秒数
from datetime import datetime, timedelta
# 生成3天的timedelta对象
timedelta(3)
# 生成3天5时25分10秒的timedelta对象
delta = timedelta(days=3, hours=5, minutes=25, seconds=10)
# delta包含的天数
delta.days
# delta包含的秒数
delta.total_seconds()
# 获取当前日期时间
dt = datetime.now()
# 3天5时25分钟10秒之前的日期时间
dt - delta