首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python3中常用模块-datetime模块

datetime模块提供了处理日期和时间的类,既有简单的方式,又有复杂的方式。它虽然支持日期和时间算法,但其实现的重点是为输出格式化和操作提供高效的属性提取功能。(可以理解为对time模块的进一步封装,里面的时间获取,转换还是使用time模块中的函数)

1:获取模块帮助文档

import datetime print(datetime.__doc__) print(dir(datetime)) for item in dir(datetime): print(item) print(help(datetime.date))print(help(datetime.time))print(help(datetime.datetime))print(help(datetime.timedelta))

2:datetime模块中定义的类

datetime模块定义了以下几个类:

datetime模块中定义的常量:

2.1:datetime.date类

2.1.1:datetime.date类的定义

class datetime.date(year, month, day)

year, month 和 day都是是必须参数,各参数的取值范围为:

2.1.2:datetime.date类方法和属性:

2.1.3:datetime.date对象方法和属性:

2.1.4:datetime.date使用实例:

from datetime import dateprint(date.max) # 9999-12-31print(date.min) # 0001-01-01print(date.resolution) # 1 day, 0:00:00print(date.today()) # 2020-05-31, 里面就是调用:fromtimestamp(time.time())print(date.fromtimestamp(1570911914)) # 2019-10-13 print('*'*50)# 创建date对象#1:使用构造函数d = date(2010,10,15)#2:当天# d = date.today()#3:使用时间戳# d = date.fromtimestamp(1570911914) print(d.year) # 2010print(d.month) # 10print(d.day) # 15 # 生成新的date对象,原来的对象不变print(d.replace(2018)) # 2018-10-15print(d.replace(2018,8)) # 2018-08-15print(d.replace(2018,8,18)) # 2018-08-18 print(d.year) # 2010print(d.month) # 10print(d.day) # 15 print(d.timetuple()) # 返回结构化时间print(d.toordinal()) # 734060 ,返回日期是是自 0001-01-01 开始的第多少天print(d.weekday()) # 4 返回日期是星期几,[0, 6],0表示星期一print(d.isoweekday()) # 5 返回日期是星期几,[1, 7], 1表示星期一print(d.isocalendar()) # (2010, 41, 5) 返回一个元组,格式为:(year, week number, isoweekday)print(d.isoformat()) # 2010-10-15 返回‘YYYY-MM-DD’格式的日期字符串print(d.strftime("%Y-%m-%d %H:%M:%S")) # 2010-10-15 00:00:00

2.2:datetime.time类

2.2.1:time类的定义

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

hour为必须参数,其他为可选参数。各参数的取值范围为:

2.2.2:time类方法和属性

2.2.3:time类对象方法和属性

 2.2.4:datetime.time使用实例:

import datetime print(datetime.time.max) # 23:59:59.999999print(datetime.time.min) # 00:00:00print(datetime.time.resolution) # 0:00:00.000001 1微秒 # 创建datetime.time对象t = datetime.time(20,15,38,999999)print(t.hour) # 20print(t.minute) #15print(t.second) # 38print(t.microsecond) # 999999print(t.tzinfo) # Noneprint(t.replace(21)) # 创建新的datetime.time对象;21:15:38.999999print(t.replace(21,11)) # 21:11:38.999999print(t.replace(21,11,15)) # 21:11:15.999999print(t.replace(21,11,15,6666)) # 21:11:15.006666 print(t.isoformat()) # 20:15:38.999999print(t.strftime("%Y-%m-%d %H:%M:%S")) # 1900-01-01 20:15:38

2.3:datetime.datetime类

2.3.1:datetime.datetime类的定义

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

year, month 和 day是必须要传递的参数, tzinfo可以是None或tzinfo子类的实例。

各参数的取值范围为

2.3.2:datetime.datetime类方法和属性

2.3.3:datetime.datetime对象方法和属性

 2.3.4:datetime.datetime使用实例:

from datetime import datetime,date,time,timezone # 创建 datetime对象print(datetime.today()) # 2020-05-31 20:32:39.199002print(datetime.now()) # 2020-05-31 20:32:39.199002print(datetime.now(timezone.utc)) # 2020-05-31 12:32:39.199002+00:00print(datetime.utcnow()) # 2020-05-31 12:32:39.199002# 从时间戳创建print(datetime.fromtimestamp(1590911914)) # 2020-05-31 15:58:34print(datetime.fromtimestamp(1590911914,timezone.utc)) # 2020-05-31 07:58:34+00:00 print(datetime.utcfromtimestamp(1590911914)) # 2020-05-31 07:58:34print(datetime.combine( date(2010,10,15),time(11,47,46))) # 2010-10-15 11:47:46# 从时间字符串创建print(datetime.strptime("2020-05-31 20:37:12", "%Y-%m-%d %H:%M:%S")) # 2020-05-31 20:37:12 print('*'*60)# datetime对象属性及方法dt = datetime.strptime("2020-05-31 20:37:12", "%Y-%m-%d %H:%M:%S")print(dt.year, dt.month, dt.day) # 2020 5 31print(dt.hour, dt.minute, dt.second) # 20 37 12print(dt.microsecond, dt.tzinfo) # 0 Noneprint(dt.date()) # 2020-05-31print(dt.time()) # 20:37:12print(dt.timetz()) # 20:37:12print('*'*60)# print(dt.replace([year[, month[, day[, hour[, minute[, second[, microsecond[, tzinfo]]]]]]]]))print(dt.replace(2019)) # 创建新的datetime对象 print(dt.timetuple()) # 结构化时间 time.struct_time(tm_year=2020, tm_mon=5, tm_mday=31, tm_hour=20, tm_min=37, tm_sec=12, tm_wday=6, tm_yday=152, tm_isdst=-1)print(dt.utctimetuple()) # 结构化时间 time.struct_time(tm_year=2020, tm_mon=5, tm_mday=31, tm_hour=20, tm_min=37, tm_sec=12, tm_wday=6, tm_yday=152, tm_isdst=0)print(dt.toordinal()) # 737576 返回日期是是自 0001-01-01 开始的第多少天print(dt.weekday()) # 6 返回日期是星期几,[0, 6],0表示星期一print(dt.isocalendar()) # (2020, 22, 7) 返回一个元组,格式为:(year, week number, isoweekday)print(dt.isoformat(sep=' ')) # 2020-05-31 20:37:12print(dt.ctime()) # Sun May 31 20:37:12 2020print(dt.strftime("%Y-%m-%d %H:%M:%S")) # 2020-05-31 20:37:12print(dt.strftime("%Y-%m-%d %H")) # 2020-05-31 20 print(dt.timestamp() ) # 1590928632

2.3.5:格式化字符串与时间戳转换:

from datetime import datetime# 转换# 时间戳-->格式化字符串dt = datetime.fromtimestamp(1590928632)print(dt.strftime("%Y-%m-%d %H:%M:%S")) # 格式化字符串-->时间戳dt = datetime.strptime("2020-05-31 20:37:12", "%Y-%m-%d %H:%M:%S")print(dt.timestamp() )

2.4:datetime.timedelta类

2.4.1:datetime.timedelta类的定义

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

2.4.2:datetime.timedelta类属性

2.4.3:datetime.timedelta实例方法和属性

2.4.4:datetime.timedelta使用实例:

import datetimeprint(datetime.timedelta.max) # 999999999 days, 23:59:59.999999print(datetime.timedelta.min) # -999999999 days, 0:00:00print(datetime.timedelta.resolution) # 0:00:00.000001print('*'*60)td = datetime.timedelta(1,20,15,88)print(td.days) # 1print(td.seconds) # 20print(td.microseconds) # 88015print(td.total_seconds()) # 86420.088015

3:时间运算

import datetime dt = datetime.datetime.now()print('1:',dt) # 1: 时间相加: 查看datetime.datetime的源代码可知:datetime 只能与timedelta相加; datetime与datetime相加没有任何意义""" def __add__(self, other): "Add a datetime and a timedelta.""""# 5天前print('2:',dt + datetime.timedelta(days=-5))# 5天又10小时前print('3:',dt + datetime.timedelta(days=-5,hours=-10)) # 5天后print('4:',dt + datetime.timedelta(days=5)) print('*'*60)# 2: 时间相减:a:两个datetimes相减;b:datetime与timedelta相减""" def __sub__(self, other): "Subtract two datetimes, or a datetime and a timedelta."""" dt = datetime.datetime.now()print('6:',dt)# 5天前print('7:',dt - datetime.timedelta(days=5)) dt2= datetime.datetime.strptime("2020-05-30 20:37:12", "%Y-%m-%d %H:%M:%S")print('8:dt - dt2:',dt - dt2) print('9:dt2 - dt:',dt2 - dt) """1: 2020-06-01 23:09:13.4291082: 2020-05-27 23:09:13.4291083: 2020-05-27 13:09:13.4291084: 2020-06-06 23:09:13.429108************************************************************6: 2020-06-01 23:09:13.4291087: 2020-05-27 23:09:13.4291088:dt - dt2: 2 days, 2:32:01.4291089:dt2 - dt: -3 days, 21:27:58.570892"""

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200805A03ZXS00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券