time模块与datetime模块
time模块
常用方法

时间元祖

时间格式

import time #字符串格式更改。如提time="2017-10-10 23:40:00",想改为 time="2017年10月10日 23点40分00秒" # 分析 time 时间字符串->格式化解析为时间元祖->格式化输出为时间字符串 time1="2017-10-10 23:40:00" time_tuple_1=time.strptime(time1,'%Y-%m-%d %H:%M:%S') print(time_tuple_1) #接受时间戳,返回时间元祖,不带参数默认时间戳为time.time(). print(time.localtime(time.time())) #返回当地时间的时间元祖 print(time.gmtime(time.time())) #返回格林威治时间的时间元祖 #接受时间元组并返回时间辍 print(time.mktime(time_tuple_1)) #时间浮点数 # time2=time.strftime('%Y年%m月%d日 %H点%M分%S秒',time_tuple_1) # print(time2) time2="%s年%s月%s日 %s点%s分%s秒"%(time_tuple_1.tm_year,time_tuple_1.tm_mon,time_tuple_1.tm_mday,time_tuple_1.tm_hour,time_tuple_1.tm_min,time_tuple_1.tm_sec) print(time2) #1.将字符串的时间"2017-10-10 23:40:00"转换为时间戳和时间元组 # 时间字符串->时间元祖->时间戳 import time time1='2017-10-10 23:40:00' timeTuple=time.strptime(time1,'%Y-%m-%d %H:%M:%S') timetamp=time.mktime(timeTuple) print('时间元祖',timeTuple) print('时间戳',timetamp) #2.字符串格式更改。如提time = "2017-10-10 23:40:00",想改为 time= "2017/10/10 23:40:00" # 时间字符串<->时间元祖 time2="2017-10-10 23:40:00" timeTuple2=time.strptime(time2,'%Y-%m-%d %H:%M:%S') time3=time.strftime('%Y/%m/%d %H:%M:%S',timeTuple2) print(time3) # 3.获取当前时间戳转换为指定格式日期 # 年/月/日 时-分-秒 # 时间戳->时间元祖->时间字符串 timetamp2=time.time() timeTuple3=time.localtime(timetamp2) time4=time.strftime('%Y/%m/%d %H-%M-%S',timeTuple3) print(time4) #4.获得三天前的时间 # 从时间戳下手,当前时间戳减去3*24*60*60 秒数,就是三天前的时间 # 时间戳->时间元祖->时间字符串 timetamp3=time.time()-3*24*60*60 timeTuple4=time.localtime(timetamp3) time5=time.strftime('%Y/%m/%d %H-%M-%S',timeTuple4) print(time5)
datetime模块
通过初步阅读datetime模块源码,datetime模块包含五个内部类,分别是:
tzinfo类(表示日期时间的时区)
date类(表示具体日期,精确到天,例如2018-7-22)
time类(表示具体时间,可精确到微秒,例如11:47:23.0001)
timedelta类(可表示具体的时间差,例如一小时时间差为timedelta(hours=1))
datetime类(表示具体日期时间,可理解为date类+time类所有属性和内部方法的结合体,例如:2018-7-22 11:49:30.0001)
构造一个date对象
datetime.date(year, month, day) #date对象(年月日都不能是以0开头 (2017,04,08)错误 )
date.max、date.min:date对象所能表示的最大、最小日期;
date.resolution:date对象表示日期的最小单位。这里是天。
date.today():返回一个表示当前本地日期的date对象;
date.fromtimestamp(timestamp):根据给定的时间戮,返回一个date对象;
实例方法和属性
replace(year, month, day):生成一个新的日期对象,用参数指定的年,月,日代替原有对象中的属性。(原有对象仍保持不变)
timetuple():返回日期对应的time.struct_time对象;
weekday():返回weekday,如果是星期一,返回0;如果是星期2,返回1,以此类推;
isoweekday():返回weekday,如果是星期一,返回1;如果是星期2,返回2,以此类推;
isocalendar():返回格式如(year,sum_week,day)的元组;
isoformat():返回格式如'YYYY-MM-DD’的字符串;
strftime(fmt):和time模块format相同。
构造一个time对象
datetime.time(hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] )
time.min、time.max:time类所能表示的最小、最大时间
time.resolution:时间的最小单位,这里是1微秒;
方法和属性
t1 = datetime.time(10,23,15) #time对象 时,分,秒... t1.hour、t1.minute、t1.second、t1.microsecond:时、分、秒、微秒 t1.tzinfo:时区信息; t1.replace([ hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ] ):创建一个新的时间对象,用参数指定的时、分、秒、微秒代替原有对象中的属性 (原有对象仍保持不变); t1.isoformat():返回型如"HH:MM:SS"格式的字符串表示; t1.strftime(fmt):同time模块中的format;
构造一个datetime对象
datetime相当于date和time结合起来。
datetime.datetime (year, month, day[ , hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ] )
静态方法和字段
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对象属性和方法(attribute and mothod)
-
对象的属性year, month, day, hour, minute,second, microsecond, tzinfo;返回对象的相关属性
-
weekday()返回星期的天(周一0,周日6)
-
isoweekday() 返回星期的天(周一1,周日7)
-
date() 返回一个timedate.data对象
-
time()返回一个timedate.time对象
-
isocalendar() 返回一个三元组(年,周,周的天)
-
timestamp()返回时间戳
-
replace() 返回一个新的datetime对象,原对象不变
-
strftime() 返回一个指定fromat的时间字符串对象
-
ctime() 返回时间的字符串对象
dt=datetime.now()#datetime对象 dt.year、month、day、hour、minute、second、microsecond、tzinfo: dt.date():获取date对象; dt.time():获取time对象; dt. replace ([ year[ , month[ , day[ , hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ] ] ] ]): dt. timetuple () dt. utctimetuple () dt. toordinal () dt. weekday () dt. isocalendar () dt. isoformat ([ sep] ) dt. ctime ():返回一个日期时间的C格式字符串,等效于time.ctime(time.mktime(dt.timetuple())); dt. strftime (format)
timedelta类,时间加减
使用timedelta可以很方便的在日期上做天days,小时hour,分钟,秒,毫秒,微妙的时间计算,如果要计算月份则需要另外的办法。
import datetime import datetime d = datetime.datetime.now() d1 = d + datetime.timedelta(days=-1) #昨天 d2 = d - datetime.timedelta(days=1) #昨天 d3 = d + datetime.timedelta(days=1) #明天 print(d) print(d1) print(d2) print(d3)
tzinfo时区类
from datetime import datetime, tzinfo,timedelta """ tzinfo是关于时区信息的类 tzinfo是一个抽象类,所以不能直接被实例化 """ class UTC(tzinfo): """UTC""" def __init__(self,offset = 0): self._offset = offset def utcoffset(self, dt): return timedelta(hours=self._offset) def tzname(self, dt): return "UTC +%s" % self._offset def dst(self, dt): return timedelta(hours=self._offset) #北京时间 beijing = datetime(2011,11,11,0,0,0,tzinfo = UTC(8)) print("beijing time:",beijing) #曼谷时间 bangkok = datetime(2011,11,11,0,0,0,tzinfo = UTC(7)) print("bangkok time",bangkok) #北京时间转成曼谷时间 print("beijing-time to bangkok-time:",beijing.astimezone(UTC(7))) #计算时间差时也会考虑时区的问题 timespan = beijing - bangkok print("时差:",timespan)

浙公网安备 33010602011771号