python中的datetime模块

在Python中,可以使用datetime模块来处理日期和时间。本章只介绍侧重使用,不讲具体语法等知识,后面章节有详细介绍。datetime模块非常好用,提供了很多日期格式、时间格式处理、转换的对象和方法。使用时,首先要导入datetime库,代码如下:

import datetime         

(1)获得当前日期,不显示时间,如:

print(datetime.date.today())
2020-01-14         

(2)使用today和now获得当前日期和时间,时间精确到毫秒级,如:

print(datetime.datetime.today())
2020-01-14 10:30:11.165332     

print(datetime.datetime.now())
2020-01-14 10:33:37.047108         

(3)使用strftime)格式化时间为标准格式strftime可以将日期输出为我们想要的格式(要特别注意参数区分大小写),如只输出日期:

#参数中V是大写,“%m%d”是小写 
print(datetime.datetime.now().strftime(%Y-%m-%d')) 
2018-11-30 

如果输出当前日期和时间,精确到秒,设置日期和时间参数即可,代码如下:

 #“%H:%M:%S”字母是大写 
 datetime.datetime.now().strftime(%Y-%m-%d%H:%M:%S')
 2018-11-3010:85:21 

如果要想输出日期、时间的同时,还要输出星期,则需要设置星期的参数,“%a”是输出星期简写的参数,“%A”是输出星期全写的参数。代码如下

print(datetime.datetime.now().strftime("%Y-%m-%d%H:%M:%S%A'))
2018-11-3010:85:21 Friday
print(datetime.datetime.now().strftime(%Y-%m-%d%H:%M:%S%a'))
 2018-11-3010:05:21Fri 

如果在输出日期、时间、星期的同时,还要输出月份,则需要设置月份的参数,“%b”是输出星期简写,“%B”是输出星期全写。代码如下:

print(datetime.datetime.now().strftime(9%Y-%m-%d%H:%M:%S%A%B'))
2018-11-3010:05:21 Friday November
print(datetime.datetime.now().strftime(9%Y-%m-%d%H:%M:%S%A%b'))
2018-11-3010:05:21 Fri Nov 

(4)倒计时计算

实现倒计时有多种方法,本书介绍使用strptime对象实现倒计时的方法。首先要设置一个未来的时间,通过strptime对象设置未来时间。设置的时间包括年、月、日和小时、分和秒。如计算到2020年元旦有多少天,需要先设置未来时间为’2020-1-10:0:0’。代码如下:

import datetime
day20=datetime.datetime.strptime(2020-1-1 0:0:e',%Y-%m-%d%H:%M:%S)

用未来的时间和现在的时间做差,然后计算出天数、小时、分和秒。下面计算天数,代码如下:

now=datetime.datetime.today()
delta=day20-now           #delta存储两个时间的时间,差精确到毫秒
day=delta.days            #获取两个时间之间的天数 

接下来计算小时、分和秒。

hour=int(delta.seconds/60/60)                      #使用int函数把小时取整
minute=int(delta.seconds-hour6060)/60)            #使用int函数把分钟取整
second=delta.seconds-hour6060-minute*60             #使用int函数把秒取整 

然后输出到2020年元旦还有多长时间,注意:我们刚才计算的数值均为整形,需要转成字符型。

print(到2020年元旦还有:+str(day)+‘天+str(hour)+'小时+str(minute)+‘分’+str(second)+‘秒) 

(5)计算未来或过去

如果想知道从现在到未来多少天后是多少号,或已经过去的多少天是几号。可以使用datetime模块的timedelta对象结合具体时间对象来实现。timedelta对象可以格式化天,小时,甚至分钟的时间。

下面是实现5天后是几号的代码:

import datetime
print(datetime.datetime.now())
print(datetime.datetime.now()+datetime.timedelta(days=5))
2018-11-30      16:20:06.162288
2018-12-5       16:20:06.162288   

计算5天前是几号的代码:

 print(datetime.datetime.now()-datetime.timedelta(days =5))
 2018-11-2512:20:06.573243 

计算300小时后是几号的代码:

print(datetime.datetime.now())
print(datetime.datetime.now()+datetime.timedelta(hours =300))
2018-11-30  16:27:29.639791
2018-12-13  4:27:29.639791 

计算3000分钟后是几号的代码

print(datetime.datetime.now())
print(datetime.datetime.now()+datetime.timedelta(minutes =3000))
2018-11-30  16:32:32.264193
2018-12-02  18:32:32.264193 

我们发现获得的时间都精确到毫秒,有时我们只需精确到天或者小时。那怎么处理呢?使用strf-me对象对日期进行格式化处理就可以了。下面是显示精确到日期、分钟和秒的代码:

mtime=datetime.datetime.now()+datetime.timedelta(minutes =3000)) print(mtime.strftime(%Y-%m-%d‘))           #精确到天 print(mtime.strftime("%Y-%m-%d%H:%M))      #精确到分 print(mtime.strftime(%Y-%m-%d%H:%M:%S"))   #精确到秒 2018-12-02 2018-12-02 18:32 2018-12-02 18:32:32  



发表评论

后才能评论