Python时间函数之一:datetime

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'

可以看到,不仅时间发生了变化,日期也发生了变化。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值