python中的时间掌控者-----time模块和datetime模块

引入

时间作为人们无时无刻不关注的话题,即使在程序中也会被经常用到。在Python中就有着两个模块来获取和操作时间:time和datetime,接下来我们分别对这两个模块进行学习。
无论是time模块还是datetime模块都是Python的内置模块,所以使用时无需安装,直接import导入即可。

time模块

1.最简单的一个用法,获取当前时间戳:调用time()方法

print(time.time())#获取当前时间戳

可以看到其打印结果是一串神秘数字,其实这串数字是距离1970年1月1日过了多少秒。
执行结果图1
2.通过时间戳获取时间元组:调用localtime()方法,传入时间戳(不传入默认为当前时间戳)。下面这个行代码是打印当前的时间元组

print(time.localtime(time.time()))#根据时间戳获取时间元组

可以从时间元组中知道当前时间是2019年3月30日,15时2分52秒,周六(0-6分别表示一周),一年中的第89天。
执行结果图2

3.通过时间元组获取时间戳:调用mktime()方法,传入时间元组

timeTuple=(2019,3,30,15,48,56,5,89,0)
time=time.mktime(timeTuple)
print(time)

执行结果图3
4.线程等待一段时间再运行:调用sleep()方法,传入参数代表等待多久,单位是秒

time.sleep(2)

5.将时间元组转化为字符串:调用strftime()方法,第一个参数是代表时间格式的字符串,第二个参数是时间元组(不传入默认为当前时间元组)。下面的时间字符串是最常用的格式,除此之外还需要了解"%A"代表周几。

timeTuple=time.localtime()
timeStr=time.strftime("%Y-%m-%d %H:%M:%S",timeTuple)
print(timeStr)

执行结果图4
6.将字符串转化为时间元组:调用strptime()方法,第一个参数是字符串,第二个参数是时间格式的字符串

timeStr="2019-03-30 16:14:57"
timeTuple=time.strptime(timeStr,"%Y-%m-%d %H:%M:%S")
print(timeTuple)

执行结果图5

datetime模块

datetime模块中,我们来学习常用的四个类:date类,time类,datetime类,timedelta类。

date类

1.新建date对象:用datetime.today()方法,传入年月日;如果想得到今天的date对象,也可以用datetime.date.today()方法

today=datetime.date(2019,3,30)
print(today)
today=datetime.date.today()
print(today)

执行结果图6
2.date对象转化为字符串:date对象调用strftime()方法,传入时间格式的字符串

today=datetime.date.today()
timeStr=today.strftime("%Y %m %d")
print(timeStr)

执行结果图7
3.date对象转化为时间元组:date对象调用timeTuple()方法,生成时间元组之后是不是又可以通过time.mktime()方法转化为时间戳了呢!

today=datetime.date.today()
timeTuple=today.timetuple()
print(timeTuple)

执行结果图8
4.date对象替换某个属性值(year,month,day)生成另一个date对象:date调用replace(year,month,day)方法,传入替换的属性值

today=datetime.date.today()
newtoday=today.replace(month=4)
print(today,'-----',newtoday)

执行结果图9
5.时间戳转化为date对象:datetime.date调用fromtimestamp()方法,传入时间戳

timeStamp=time.time()
date=datetime.date.fromtimestamp(timeStamp)
print(date)

执行结果图10

time类

1.新建一个time对象:调用datetime的time()方法,传入三个参数分别代表时分秒

mytime=datetime.time(15,24,56)
print(mytime)

执行结果图11
2.time对象转化为字符串:time对象调用strftime()方法,传入时间格式的字符串

mytime=datetime.time(15,24,56)
timeStr=mytime.strftime('%H %M %S')
print(mytime,'------',timeStr)

执行结果图12
3.time替换某个属性值(hour,minute,second)生成另外一个time对象:time对象调用replace()方法,传入替换的属性值

mytime=datetime.time(15,24,56)
newtime=mytime.replace(minute=42)
print(mytime,'-----',newtime)

执行结果图13

datetime类

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)

执行结果图14
2.datetime对象转化为字符串:datetime对象调用strftime()方法,传入时间格式的字符串

mydatetime=datetime.datetime.now()
timeStr=mydatetime.strftime('%Y %m %d %H %M %S')
print(mydatetime,'------',timeStr)

执行结果图15
3.字符串转化为datetime对象:datetime类调用strptime()方法;第一个参数传入时间字符串,第二个参数传入时间格式的字符串

timeStr='2019-3-31 14:23:45'
mydatetime=datetime.datetime.strptime(timeStr,'%Y-%m-%d %H:%M:%S')
print(mydatetime)

执行结果图16
4.datetime对象生成时间元组:datetime对象调用timetuple()方法,转化为时间元组是不是就可以调用time模块的mktime()方法转化为时间戳了呢?

mydatetime=datetime.datetime.now()
timeTuple=mydatetime.timetuple()
print(timeTuple)

执行结果图17
通过时间戳生成datetime对象:datetime类调用fromtimestamp()方法,传入时间戳

timestamp=time.time()
mydatetime=datetime.datetime.fromtimestamp(timestamp)
print(timestamp,'------',mydatetime)

执行结果图18
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)

执行结果图19
7.获取datetime对象的日志,具体时间,以及周几:datetime分别调用date()方法,time()方法,weekday()方法

mydatetime=datetime.datetime.now()
mydate=mydatetime.date()
mytime=mydatetime.time()
weekday=mydatetime.weekday()
print(weekday,'---',mydate,'---',mytime)

执行结果图20

timedelta类

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())

执行结果图21

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)

执行结果图22

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值