时间作为人们无时无刻不关注的话题,即使在程序中也会被经常用到。在Python中就有着两个模块来获取和操作时间:time和datetime,接下来我们分别对这两个模块进行学习。
无论是time模块还是datetime模块都是Python的内置模块,所以使用时无需安装,直接import导入即可。
1.最简单的一个用法,获取当前时间戳:调用time()方法
print(time.time())#获取当前时间戳
可以看到其打印结果是一串神秘数字,其实这串数字是距离1970年1月1日过了多少秒。
2.通过时间戳获取时间元组:调用localtime()方法,传入时间戳(不传入默认为当前时间戳)。下面这个行代码是打印当前的时间元组
print(time.localtime(time.time()))#根据时间戳获取时间元组
可以从时间元组中知道当前时间是2019年3月30日,15时2分52秒,周六(0-6分别表示一周),一年中的第89天。
3.通过时间元组获取时间戳:调用mktime()方法,传入时间元组
timeTuple=(2019,3,30,15,48,56,5,89,0)
time=time.mktime(timeTuple)
print(time)
4.线程等待一段时间再运行:调用sleep()方法,传入参数代表等待多久,单位是秒。
time.sleep(2)
5.将时间元组转化为字符串:调用strftime()方法,第一个参数是代表时间格式的字符串,第二个参数是时间元组(不传入默认为当前时间元组)。下面的时间字符串是最常用的格式,除此之外还需要了解"%A"代表周几。
timeTuple=time.localtime()
timeStr=time.strftime("%Y-%m-%d %H:%M:%S",timeTuple)
print(timeStr)
6.将字符串转化为时间元组:调用strptime()方法,第一个参数是字符串,第二个参数是时间格式的字符串
timeStr="2019-03-30 16:14:57"
timeTuple=time.strptime(timeStr,"%Y-%m-%d %H:%M:%S")
print(timeTuple)
datetime模块中,我们来学习常用的四个类:date类,time类,datetime类,timedelta类。
1.新建date对象:用datetime.today()方法,传入年月日;如果想得到今天的date对象,也可以用datetime.date.today()方法。
today=datetime.date(2019,3,30)
print(today)
today=datetime.date.today()
print(today)
2.date对象转化为字符串:date对象调用strftime()方法,传入时间格式的字符串
today=datetime.date.today()
timeStr=today.strftime("%Y %m %d")
print(timeStr)
3.date对象转化为时间元组:date对象调用timeTuple()方法,生成时间元组之后是不是又可以通过time.mktime()方法转化为时间戳了呢!
today=datetime.date.today()
timeTuple=today.timetuple()
print(timeTuple)
4.date对象替换某个属性值(year,month,day)生成另一个date对象:date调用replace(year,month,day)方法,传入替换的属性值
today=datetime.date.today()
newtoday=today.replace(month=4)
print(today,'-----',newtoday)
5.时间戳转化为date对象:datetime.date调用fromtimestamp()方法,传入时间戳
timeStamp=time.time()
date=datetime.date.fromtimestamp(timeStamp)
print(date)
1.新建一个time对象:调用datetime的time()方法,传入三个参数分别代表时分秒
mytime=datetime.time(15,24,56)
print(mytime)
2.time对象转化为字符串:time对象调用strftime()方法,传入时间格式的字符串
mytime=datetime.time(15,24,56)
timeStr=mytime.strftime('%H %M %S')
print(mytime,'------',timeStr)
3.time替换某个属性值(hour,minute,second)生成另外一个time对象:time对象调用replace()方法,传入替换的属性值
mytime=datetime.time(15,24,56)
newtime=mytime.replace(minute=42)
print(mytime,'-----',newtime)
datetime类中的方法和time类和date类差不多,只不过他表示两者的结合:日期和具体时间。所以我们在使用的时候使用datetime类比较多一点。
1.新建datetime对象:datetime类调用datetime()方法,传入代表各个属性值(year,month,day,hour,minute,second)的参数;如果你想获取的是当前时间,也可以datetime类调用today()或now()方法
datetime1=datetime.datetime(2019,3,31,19,25,27)
datetime2=datetime.datetime.today()
datetime3=datetime.datetime.now()
print(datetime1,'-------',datetime2,'-------',datetime3)
2.datetime对象转化为字符串:datetime对象调用strftime()方法,传入时间格式的字符串
mydatetime=datetime.datetime.now()
timeStr=mydatetime.strftime('%Y %m %d %H %M %S')
print(mydatetime,'------',timeStr)
3.字符串转化为datetime对象:datetime类调用strptime()方法;第一个参数传入时间字符串,第二个参数传入时间格式的字符串
timeStr='2019-3-31 14:23:45'
mydatetime=datetime.datetime.strptime(timeStr,'%Y-%m-%d %H:%M:%S')
print(mydatetime)
4.datetime对象生成时间元组:datetime对象调用timetuple()方法,转化为时间元组是不是就可以调用time模块的mktime()方法转化为时间戳了呢?
mydatetime=datetime.datetime.now()
timeTuple=mydatetime.timetuple()
print(timeTuple)
通过时间戳生成datetime对象:datetime类调用fromtimestamp()方法,传入时间戳
timestamp=time.time()
mydatetime=datetime.datetime.fromtimestamp(timestamp)
print(timestamp,'------',mydatetime)
6.datetime对象替换属性值(year,month,day,hour,minute,second)生成新的datetime对象:datetime对象调用replace()方法,传入替换的属性值
mydatetime=datetime.datetime.now()
newdatetime=mydatetime.replace(year=2020,second=54)
print(mydatetime,'----',newdatetime)
7.获取datetime对象的日志,具体时间,以及周几:datetime分别调用date()方法,time()方法,weekday()方法
mydatetime=datetime.datetime.now()
mydate=mydatetime.date()
mytime=mydatetime.time()
weekday=mydatetime.weekday()
print(weekday,'---',mydate,'---',mytime)
timedelta主要用于表示时间的差值,timedelta有两个属性值:days代表相差的天数;seconds代表相差的秒数。
1.可以用过两个datetime相减生成timedelta对象(需要注意的是如果用之前的时间减去之后的时间得到的值是负的),我们也可以调用timedelta的total_seconds()方法获得差值一共是多少秒,这样我们可以随意化成分钟,天数,月数等。
datetime1=datetime.datetime(2019,3,31,19,25,27)
datetime2=datetime.datetime(2019,4,3,19,26,27)
mytimedelta=datetime2-datetime1
print(mytimedelta.days,'----',mytimedelta.seconds)
print(mytimedelta.total_seconds())
2.通过datetime调用timedelta()方法得到timedelta对象,选择性传入各个属性值:weeks,days,hours,minutes,seconds,microseconds(微秒),milliseconds(毫秒)。这样我们用一个datetime对象加上timedelta对象就可得到另外一个datetime对象。
mydatetime=datetime.datetime.now()
mytimedelta=datetime.timedelta(days=3,minutes=2,seconds=2,hours=2,weeks=2)
newdatetime=mydatetime+mytimedelta
print(mydatetime,'--------',newdatetime)