一 Python 中 日期类型 与字符串互转的问题
- 1 字符串 转成 datetime 类型
- 2 datetime 类型 转成 字符串
二 日期相加减的问题
三 datetime模块
1.datetime中的常量
- datetime.MINYEAR,表示datetime所能表示的最小年份,MINYEAR = 1。
- datetime.MAXYEAR,表示datetime所能表示的最大年份,MAXYEAR = 9999。
2.datetime中的类
- datetime.date:表示日期的类。常用的属性有year, month, day;
- datetime.time:表示时间的类。常用的属性有hour, minute, second, microsecond;
- datetime.datetime:表示日期时间。
- datetime.timedelta:表示时间间隔,即两个时间点之间的长度。
- datetime.tzinfo:与时区有关的相关信息。
3.date类
date类表示一个由年、月、日组成的日期。
①类方法与类属性
date类定义了一些常用的类方法与类属性,方便我们操作:
- date.max、date.min:date对象所能表示的最大、最小日期;
- date.resolution:date对象表示日期的最小单位。这里是天。
- date.today():返回一个表示当前本地日期的date对象;
- date.fromtimestamp(timestamp):根据给定的时间戮,返回一个date对象;
- datetime.fromordinal(ordinal):将Gregorian日历时间转换为date对象;(Gregorian Calendar :一种日历表示方法,类似于我国的农历,西方国家使用比较多,此处不详细展开讨论。)
②实例方法和属性
date提供的实例方法和属性:
- date.year、date.month、date.day:年、月、日;
- date.replace(year, month,day):生成一个新的日期对象,用参数指定的年,月,日代替原有对象中的属性。(原有对象仍保持不变)
- date.timetuple():返回日期对应的time.struct_time对象;
- date.toordinal():返回日期对应的Gregorian Calendar日期;
- date.weekday():返回weekday,如果是星期一,返回0;如果是星期2,返回1,以此类推;
- data.isoweekday():返回weekday,如果是星期一,返回1;如果是星期2,返回2,以此类推;
- date.isocalendar():返回格式如(year,month,day)的元组;
- date.isoformat():返回格式如’YYYY-MM-DD’的字符串;
- date.strftime(fmt):自定义格式化字符串。在下面详细讲解。
③date支持的其他操作
- date2 = date1 + timedelta #日期加上一个间隔,返回一个新的日期对象)
- date2 = date1 - timedelta #日期隔去间隔,返回一个新的日期对象
- timedelta = date1 - date2 #两个日期相减,返回一个时间间隔对象
- date1 < date2 #两个日期进行比较
4.Time类
time类表示时间,由时、分、秒以及微秒组成。
①time类定义的类属性
- time.min、time.max:time类所能表示的最小、最大时间。其中,time.min = time(0, 0, 0, 0),time.max = time(23, 59, 59, 999999);
- time.resolution:时间的最小单位,这里是1微秒;
②time类提供的实例方法和属性
- time.hour、time.minute、time.second、time.microsecond:时、分、秒、微秒;
- time.tzinfo:时区信息;
- time.replace([ hour[ , minute[ , second[ ,microsecond[ , tzinfo] ] ] ] ] ):创建一个新的时间对象,用参数指定的时、分、秒、微秒代替原有对象中的属性(原有对象仍保持不变);
- time.isoformat():返回型如”HH:MM:SS”格式的字符串表示;
- time.strftime(fmt):返回自定义格式化字符串。在下面详细介绍;
像date一样,也可以对两个time对象进行比较,或者相减返回一个时间间隔对象。
5.datetime类
datetime是date与time的结合体,包括date与time的所有信息。
①datetime类定义的类属性与方法
- datetime.min、datetime.max:datetime所能表示的最小值与最大值;
- datetime.resolution:datetime最小单位;
- datetime.today():返回一个表示当前本地时间的datetime对象;
- datetime.now([tz]):返回一个表示当前本地时间的datetime对象,如果提供了参数tz,则获取tz参数所指时区的本地时间;
- datetime.utcnow():返回一个当前utc时间的datetime对象;
- datetime.fromtimestamp(timestamp[,tz]):根据时间戮创建一个datetime对象,参数tz指定时区信息;
- datetime.utcfromtimestamp(timestamp):根据时间戮创建一个datetime对象;
- datetime.combine(date, time):根据date和time,创建一个datetime对象;
- datetime.strptime(date_string, format):将格式字符串转换为datetime对象;
②datetime类提供的实例方法与属性
- datetime.year、month、day、hour、minute、second、microsecond、tzinfo:年、月、日、时、分、秒、毫秒、时区;
- datetime.date():获取date对象。
- datetime.time():获取time对象。
- datetime. replace([ year[ , month[ , day[ , hour[ , minute[ , second[ , microsecond[ ,tzinfo] ] ] ] ] ] ] ]): 返回一个替换了指定日期时间字段的新datetime对象。
- datetime.timetuple ():返回一个时间元素, 等价于time.localtime()。
- datetime. utctimetuple():返回UTC时间元组对象, 等价于time.localtime()。
- datetime. toordinal ():返回日期对应的Gregorian Calendar 日期。
- datetime. weekday ():返回 0 ~ 6 表示星期几(星期一是0,依此类推)。
- datetime. isocalendar ():返回一个三元组格式 (year, month, day)。
- datetime. isoformat ([ sep] ):返回一个 ISO 8601 格式的日期字符串,如 “YYYY-MM-DD”的字符串。
- datetime. ctime():返回一个日期时间的C格式字符串,等效于time.ctime(time.mktime(dt.timetuple()));
- datetime. strftime (format):返回自定义格式化字符串表示日期。
像date一样,也可以对两个datetime对象进行比较,或者相减返回一个时间间隔对象,或者日期时间加上一个间隔返回一个新的日期时间对象。
6.timedelta与tzinfo类
①timedelta类
datetime.timedelta对象代表两个时间之间的的时间差,两个date或datetime对象相减时可以返回一个timedelta对象。
timedelta包含数据days、seconds、microseconds,表示天数、秒数、微秒数,包含方法total_seconds() ,表示时间间隔的总秒数。
②tzinfo类
tzinfo:与时区有关的相关信息。
一些具体案例情况
""" 时间模块的demo 这里主要介绍了 1.字符串 转成 datetime 类型 2.datetime 类型 转成 字符串 """ # 字符串 转成 datetime 类型 """ def strptime(cls, date_string, format):pass 这个函数 需要传入两个参数 date_string 即日期字符串, format 即日期的格式 """ import datetime datestr1 = '2017-03-28' datestr2 = '2017-03-31' date1 = datetime.datetime.strptime(datestr1, '%Y-%m-%d') date2 = datetime.datetime.strptime(datestr2, '%Y-%m-%d') diff_days = (date2 - date1) diff_days = (date2 - date1).days print(diff_days) print(date1.year) print(type(datestr1)) print('---------------------------------------------') 结果如下: 3 2017 <class 'str'> --------------------------------------------- """ def strftime(self, fmt: Union[str, unicode]) -> str: ... """ # datetime 类型 转成 字符串 import datetime date_0 = datetime.datetime.now() datestr = date_0.strftime('%Y-%m-%d') datestr2 = str(date_0) dt, _ = datestr2.split('.') print(date_0) print(datestr) print(datestr2) print(dt) print(type(date_0)) print('---------------------------------------------') 结果如下: 2018-07-17 13:12:26.216551 2018-07-17 2018-07-17 13:12:26.216551 2018-07-17 13:12:26 <class 'datetime.datetime'> --------------------------------------------- """ 日期相加减的问题 在datetime模块,有一个类 timedelta 来进行日期的相加减操作 delta:希腊语字母表第四字母δ,[数]变量增量 """ from datetime import datetime,date,time,timedelta dt = datetime(2018, 3, 1, 19, 40, 30) dt = datetime(2018, 3, 1, 19, 40, 30, 356102) print(dt,type(dt)) 结果如下: 2018-03-01 19:40:30.356102 <class 'datetime.datetime'> #1. 一个日期 向前或向后推迟几天 dt2 = dt+timedelta(days=5) print(dt2) #1. 一个日期 向前或向后推迟几小时 now = datetime.now() print(now) hours = timedelta(hours=3) next = now+hours print(next) 结果如下: 2018-03-06 19:40:30.356102 2018-07-17 13:12:26.216551 2018-07-17 16:12:26.216551 #3 同理 还可以支持 seconds , milliseconds,minutes,weeks 分别是 秒 ,毫秒, 分钟, 周... def __new__(cls, days=None, seconds=None, microseconds=None, milliseconds=None, minutes=None, hours=None, weeks=None): # known case of datetime.timedelta.__new__) pass
参考完档: