醉里挑灯看剑,梦回吹角连营。八百里分麾下炙,五十弦翻塞外声。沙场秋点兵。
马作的卢飞快,弓如霹雳弦惊。了却君王天下事,赢得生前身后名。可怜白发生!
几个术语了解
- 时间戳(timestamp)的方式:通常来说,时间戳表示的是从1970年1月1日开始按秒计算的偏移量(time.gmtime(0))此模块中的函数无法处理1970纪元年以前的时间或太遥远的未来(处理极限取决于C函数库,对于32位系统而言,是2038年)
- UTC(Coordinated Universal Time,世界协调时)也叫格林威治天文时间,是世界标准时间.在我国为UTC+8
- DST(Daylight Saving Time)即夏令时
一、time模块的使用
- time.time()
获取当前时间戳(以秒为单位的浮点型的时间戳)print(time.time())
>>>1539847769.6119404
- time.localtime(seconds=None)
默认获取当前时间的结构化时间print(time.localtime())
>>>time.struct_time(tm_year=2018, tm_mon=10, tm_mday=18, tm_hour=15, tm_min=35, tm_sec=0, tm_wday=3, tm_yday=291, tm_isdst=0)
- time.mktime(p_tuple)
将结构化时间转化成时间戳格式print(time.mktime(time.localtime()))
>>>1539849828.0
注意和time.time()的区别:print(time.time())
1539849828.090503
- time.strftime(format, p_tuple=None)
格式化时间(字符串)print(time.strftime("%Y-%m-%d %H:%M:%S"))
>>>2018-10-18 15:56:42
- time.strptime(string, format)
将格式化时间转成结构化时间print(time.strptime("2018-10-18 15:56:42","%Y-%m-%d %H:%M:%S"))
>>>time.struct_time(tm_year=2018, tm_mon=10, tm_mday=18, tm_hour=15, tm_min=56, tm_sec=42, tm_wday=3, tm_yday=291, tm_isdst=-1)
- time.gmtime(seconds=None)
默认当前UTC时间转结构化时间,与英国伦敦当地时间一致print(time.gmtime(time.time()))
>>>time.struct_time(tm_year=2018, tm_mon=10, tm_mday=18, tm_hour=8, tm_min=10, tm_sec=16, tm_wday=3, tm_yday=291, tm_isdst=0)
- time.sleep(secends)
线程推迟指定的时间运行
附一:
附二:time时间之间的转换
二、datetime 模块的使用
datetime模块定义了5个类,分别是
- 1.datetime.date:是指年月日构成的日期(相当于日历)
- 2.datetime.datetime:是指时分秒微秒构成的一天24小时中的具体时间(相当于手表)
- 3.datetime.time:上面两个合在一起,既包含时间又包含日期
- 4.datetime.timedelta:表示时间间隔,即两个时间点的间隔
- 5.datetime.tzinfo:时区的相关信息
1. datetime.date类
- date类有三个参数,datetime.date(year,month,day),返回year-month-day
print(datetime.date(2017,12,1))
>>>2017-12-01
- datetime.date.today()
获取当前时间的年月日print(datetime.date.today())
>>>2018-10-18
- datetime.date.isoweekday(cls)
获取指定日期是星期几,1=周一,7=周天a = datetime.date.today()
print(datetime.date.isoweekday(a))
>>>4
- datetime.date.weekday(cls)
获取指定日期是星期几,0=周一,6=周天a = datetime.date.today()
print(datetime.date.weekday(a))
>>>3
- datetime.date.fromtimestamp(时间戳)
将时间戳转化成特定格式的年月日print(datetime.date.fromtimestamp(1539847769))
>>>2018-10-18
- cls.timetuple() 将特定格式的日期转化成结构化时间
a = datetime.date.today()
print(a.timetuple())
>>>time.struct_time(tm_year=2018, tm_mon=10, tm_mday=18, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=291, tm_isdst=-1)
- cls.replace(year=2010) 替换指定的年月日
a = datetime.date.today()
print(a.replace(year=2010))
>>>2010-10-18
2. datetime.time类
time类有5个参数,datetime.time(hour,minute,second,microsecond,tzoninfo)
print(datetime.time(8,5,32))
print(datetime.time(8,5,32,32))
>>>08:05:32
>>>08:05:32.000032
cls.strftime("时间格式")
指定时间格式a= datetime.time(8,5,32,32)
print(a.strftime("%H:%M"))
>>>08:05
cls.replace()
替换时分秒a= datetime.time(8,5,32,32)
print(a.replace(hour=18))
>>>18:05:32.000032
datetime.time.tzname()
返回时区名字:略datetime.time.utcoffset()
返回时区的时间偏移量:略
3. datetime.datetime类
datetime模块类的使用大同小异,有很多方法我们可能这辈子都用不上,datetime类的方法比较多,在这里我就捡重点的列一下:
- datetime.datetime.now()或者datetime.datetime.today()
得到当前的具体时间(不指定时区时两个方法一样的效果)print(datetime.datetime.now())
>>>2018-10-18 19:15:17.691425
- datetime.datetime.now().date()
返回当前时间的年月日部分print(datetime.datetime.now().date())
>>>2018-10-18
- datetime.datetime.now().time()
返回当前时间的时分秒...部分print(datetime.datetime.now().time())
>>>19:16:54.497104
- datetime.datetime.strftime()
由日期格式转化为字符串格式print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
>>>2018-10-18 19:21:13
- datetime.datetime.strptime()
由字符串格式转化为日期格式a = datetime.datetime.strptime("2018-10-18 19:21:37",'%Y-%m-%d %H:%M:%S')
print(a,type(a))
>>>2018-10-18 19:21:37 <class 'datetime.datetime'>
4. datetime.timedelta类
datetime.datetime.timedelta用于计算两个日期之间的差值:
import datetime
a = datetime.datetime(2015, 10, 3)
b = datetime.datetime.now()
res1 = (b - a)
res2 = (b - a).days // 取时间差天数
res3 = (b - a).seconds // 取时间差时分秒部分的秒数总和
res4 = (b - a).microseconds // 取时间差 秒数之后的微秒数
res5 = (b - a).total_seconds() // 时间差的总秒数
print(res1) >>> 1111 days, 19:48:35.543523
print(res2) >>> 1111
print(res3) >>> 71315
print(res4) >>> 71315
print(res5) >>> 96061715.543523