Python时间函数之一:datetime
时间函数不止这个一个哦!
笔者Python版本:Python 3.8.10
基础的获取时间
如果是想要获取其中的时间(年月日),可以使用其中的datetime模块
没想到吧,datetime里面套datetime
today()
比如说,有一个宝宝忘记今天是几月几号了,需要你使用python代码告诉他日期。
你可以输入下面的代码
import datetime
print(datetime.datetime.today())
输出实例:
2024-11-20 17:41:59.890127
可以看的出来的是,其中输出不仅包括了日期,也包括了这个点儿的时间,甚至精确到了纳秒。
这么复杂的数据,对咱们来说没有什么用,只要前面的日期就行了。
因此,对其中数据筛选的代码就有了 。-
在输出的语句前面,你需要做出一下更改。
import datetime
# 获取到时间的数据
date = datetime.datetime.today()
print(date.strftime("%Y-%m-%d")) # 注意大小写!
这时候,输出就会变成这样:
2024-11-20
只剩下日期啦!
now()
同理,其实你也可以通过now
方法来获取到现在的时间,其中的输出与上文是相同的。
数据的清洗和today()中的方法是相同的,这里就不过多赘述了。
两对孪生兄弟
从上面的代码中可以看到,其中有一个方法是strptime
,还有一个是strftime
,两者有什么区别呢?
从总体来看,这两兄弟拥有一个共同的功能,就是可以进行数据的清洗,化简获取到的时间数据。
那么,这俩玩意中间差的就是一个字符,有什么区别呢?
strftime()
这个方法,是将datetime
类型转化为字符串。
import datetime
a = datetime.datetime.now()
time1 = a.strptime("%Y-%m-%d")
这时候,我们来看看time1的结果和数据类型
>>time1
2024-11-20
>>type(time1)
<class 'str'>
可以看到,输出的数据类型是一个字符串,也就是说,返回的结果将是一个字符串类型。
strptime()
这个方法与strfttime
的作用是相反的,用于将字符串类型转化为一个datetime
类型。
我们来实践一下
import datetime
a = "2024-11-20"
time1 = datetime.datetime.strptime(a, "%Y-%m-%d")
我们这时候再输出看看
>>time1
2024-11-20 00:00:00
>> type(time1)
<class 'datetime.datetime'>
可以看到,输出的是一个完整的时间,数据的类型是datetime.datetime
不过不同的是,这里的方法中,含有两个输入值,一个是要转化的字符串,另一个就是要转化的格式。
如果我们还是要得到一个像是上面那样清晰的时间,就使用strftime
方法。
>>time1.strftime("%Y-%m-%d")
2024-11-20
或者使用另一种方法
>>time.date()
2024-11-20
一些简单的计算
接下来,将会介绍一些简单的计算
计算两个日期中间隔的天数
在计算间隔的天数的时候,可以选择将其转化为”年月日“的形式,但是不转化也是可以的。
开始计算!
import datetime
a = "2024-11-20"
b = "2020-3-31"
# 将数据转化为datetime.datetime,便于计算
date1 = datetime.datetime.strptime(a, "%Y-%m-%d")
date2 = datetime.datetime.strptime(b, "%Y-%m-%d")
这时候我们就完成了基础的数据初始化
days = date1 - date2
这就是最终的结果了吗?打印一下
>>days
-1695 days, 0:00:00
看起来,最终的结果不是我们想要的,因为它还包含了”时分秒“的数据。
这时候,我们要进行数据的提取
>>days.days
-1695
这就是最终的结果啦!
计算是否是闰年
计算闰年?这不是露头就秒的代码?
但是你想想,有了预制菜,为啥还要自己煮呢?(手动狗头)
使用的函数:isleap()
接下来我们来看看实战效果
import datetime
a = 2024
is_true = datetime.isleap(a)
接下来,我们看看输出的结果
>>is_true
True
可以看到,2024为闰年。
要注意的是,其中输入到isleap的函数一定是要是int类型的。
时间控制大师
自由控制时间?随便的加减运算时间?
对!timedelta函数会帮助你!
我们先看看内部的构造
timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
其中出现的各种奇奇怪怪的时间参数,对应的就是要计算的时间参数。
days
——要加上/减去的天数seconds
——要加上/减去的秒数,它的取值范围是0到86,399(包括86,399),如果多了的话,将会自动加到天数上去microseconds
——要加上/减去的微秒数,它的取值范围是0到999,999(包括999,999)。如果多了的话,将会自动加到秒上去。minutes
——要加上/减去的分钟数hours
——要加上/减去的小时数weeks
——要加上/减去的周数
这个函数中的精髓就是可以与datetime进行计算。
import datetime
a = datetime.datetime.now()
td = datetime.timedelta(seconds=3, minutes=4, weeks=1)
其中a代表的是今天的时间和日期,td代表的是要加上的日期。
这里我们将a加上td看看
>> (a + td).strftime("%Y-%m-%d %H:%M:%S")
'2024-11-27 23:36:51'
>>a.strftime("%Y-%m-%d %H:%M:%S")
'2024-11-20 23:32:48'
可以看到,不仅时间发生了变化,日期也发生了变化。