Python日期处理:日期转字符串 & 字符串转日期 & 两个日期相减

599 阅读2分钟

Python🈶️个叫datetime的模块(包),这个模块集成了3个主要的类型:

  • datatime类型: 日期和时间
  • date类型: 日期
  • time类型: 时间

1.认识3个主要的日期和时间类型

打开Ipython,实践中学习。

In [1]: from datetime import datetime,date,time

In [3]: dt = datetime(2020,5,15,13,58)                                          

In [4]: dt                                                                      
Out[4]: datetime.datetime(2020, 5, 15, 13, 58)

In [5]: dt.strftime('%m-%d-%y %H:%M')                                           
Out[5]: '05-15-20 13:58'

In [6]: dt.strftime('%m-%d-%Y %H:%M')                                           
Out[6]: '05-15-2020 13:58'

2. 日期转字符串

strftime()函数,正如其意str from time可以实现日期转字符串的功能。

  • 大写的Y: 年份的全称,比如2020,2019
  • 小写的Y: 年份的简称,比如20,19,表示2020年,2019年

当然这种展示方式不是我们习惯上使用的那种“年-月-日”的表达方式,strftime()可以让日期的输出结果调整为“年-月-日”的形式。

In [7]: dt.strftime('%Y-%m-%d %H:%M')                                           
Out[7]: '2020-05-15 13:58'

3. 字符串转日期

接着上文来,把日期转字符串的结果赋值给变量s,这时s是一个字符类型的变量。

In [8]: s = dt.strftime('%Y-%m-%d %H:%M')                                       

In [9]: s                                                                       
Out[9]: '2020-05-15 13:58'

In [13]: type(s)                                                                
Out[13]: str

再将s变量转换为日期类型的变量:

In [12]: datetime.strptime(s,'%Y-%m-%d %H:%M')                                  
Out[12]: datetime.datetime(2020, 5, 15, 13, 58)

4. 两个日期相减

两个datetime的字段相减,可以得到一个timedelta类型的变量。

In [17]: dt                                                                     
Out[17]: datetime.datetime(2020, 5, 15, 13, 58)

In [19]: dt2 = dt.replace(minute=4, second=10)                                  

In [20]: dt2                                                                    
Out[20]: datetime.datetime(2020, 5, 15, 13, 4, 10)

In [21]: dt - dt2                                                               
Out[21]: datetime.timedelta(seconds=3230)

In [22]: type(dt - dt2)                                                         
Out[22]: datetime.timedelta

In [35]: (dt - dt2).total_seconds()                                             
Out[35]: 3230.0

把timedelta变量转为秒为单位的值,调用total_seconds()方法

记得下方给我点赞支持哦👍👍👍
关注微信公众号:数据分析之家
在这里插入图片描述