学而时习之,不亦悦乎。经常的复习下之前的知识,不仅加深、巩固记忆,还能在复习的同时,查漏补缺。
今天针对python库自带的三个时间模块进行复习。。。。
time模块
time模块提供各种操作时间的函数
由于time模块是python自带的,所以只需要简单的import time
就ok了
获取时间戳
time.time()函数可以用来获取当前时间的时间戳。即自1970-01-01开始的格林威治标准时间
这里需要解释两点
1.why 1970-01-01?
这个时间是以UNIX诞生时间,unix认为1970年1月1日0点是时间纪元,其他编程语言的时间戳也是这么使用的
格林威治时间即为0时区时间,中学地理肯定学过本初子午线吧,哈哈....
好了返回正题
t=time.time() print(t) # 1519818341.5785086 # 简单的计算一下 year=t / (24*60*60*365) +1970 # 2018.1931234645647 # 得到当前年份
获取时间元组
使用localtime函数即可得到一个元组结构化的时间格式
t1=time.localtime() print(t1) # time.struct_time(tm_year=2018, tm_mon=2, tm_mday=28, tm_hour=19, tm_min=45, tm_sec= 41, tm_yday=59 tm_isdst=0)
如果你给定一个时间戳,也可以通过localtime将时间戳转化为时间元组随便写一个时间
tt=time.localtime(1513810287.1759758)
格式化时间
1.将时间戳格式化
result=time.ctime(t) print(result) # Wed Feb 28 19:49:33 2018
2.将时间元组格式化
result=time.asctime(time.localtime()) print(result)
3.格式化日期字符串
result=time.strftime(“%Y-%m-%d %H:%M:%S”,time.localtime()) print(result)
时间元组格式化为时间戳
t3=time.mktime(time.localtime())
时间字符串转化为
pt=time.strtime(‘18-02-28 19:53:23’,’%y-%m-%d %H:%M:%S’) print(pt)
耗时计算
start=time.clock() for i in range(1000): print(i) end=time.colock() print(end-start)
时间等待
time.sleep(3)
这个没啥讲的了。。。
日历模块
打印文本日历,算是时间模块的一种,但是坦白说,貌似没什么卵用....
import calendar print(calendar.month(2018-2))
datetime模块
datetime模块包含三个子类,datetime date time。它主要用来处理时间,使用前先倒入datetime模块
import datetime
显示当前时间
print(datetime.datetime.now()) or print(datetime.datetime.today())
那么显示当前时间的年、月、日等改怎么操作呢?很简单
print(datetime.datetime.now().year) print(datetime.datetime.now().day)
当前时间tuple
dateime.datetime.now().timetuple()
显示当前日期
datetime.datetime.now().date()
计算N天后的时间
today=datetime.datetime.today() future=today+datetime.timedelta(days=7) print(future)
计算时间差
first=datetime.datetime(2017,9,9,12,1,03) second=datetime.datetime(2018,2,28,19,20,11) delta=second-first print(delta) # 172 days ,7:19:08 print(delta.tatal_seconds()) 14887148.0
时间转化
datetime转str:
datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
str格式转化为datetime格式:
datetime.datetime.strptime("2018-02-20 11:50:20" , "%Y-%m-%d %H:%M:%S")
时间戳转datetime
datetime.datetime.fromtimestamp(1519826222) # datetime.datetime(2018,2,28,21,57,2)