python中日期字符串与datetime类型的相互转换

Posted 但老师

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中日期字符串与datetime类型的相互转换相关的知识,希望对你有一定的参考价值。


背景

我们在平常写代码的过程中最常遇到的就是形如2021-05-12,2021/05/21等的文本字符串,这两串还算是比较规范的写法,不规范的甚至还有2021-5-12,2021.5.12五花八门,只有想不到,没有写不出来,让人甚是头疼.这一篇会简单介绍

  1. datetime如何转换成日期字符串
  2. 日期字符串如何转换成datetime

代码

1. datetime如何转换成日期字符串

有一定python经验的人都知道,datetime.datetime是python的一个类,一般通过isinstance函数来判断

>>> import datetime
>>> now = datetime.datetime.now() # 当前时间
>>> isinstance(now,datetime.datetime)
True

我在将列表或数组写到文件中的时候,就经常会因为遇到这种类型且没有进行转换而报错

现在在上一份代码的基础上,将datetime转换成我们常见的日期字符串,以进行写入或者其他展示操作

>>> date = now.strftime('%Y-%m-%d')
>>> date
'2021-05-12'

我理解strftime是str from time的缩写,表示将日期时间转换为文本.在转换的时候,对应格式化字符如下表(大小写敏感)

字符含义举例
%Y2021
%m05
%d12
%H小时20
%M分钟45
%S秒钟34

如果转换成日期时间,完整的写法如下

>>> import datetime
>>> now = datetime.datetime.now()
>>> time = now.strftime('%Y-%m-%d %H:%M:%S')
>>> time
'2021-05-12 20:45:34'

2. 日期字符串如何转换成datetime

一般从别处获取到的日期数据,都是文本格式存储的

>>> import datetime
>>> date = '2021-05-12'
>>> dt = datetime.datetime.strptime(date,'%Y-%m-%d')
>>> dt
datetime.datetime(2021,5,12,0,0)

strptime我理解是 str parse time,意即将文本转换成标准的日期时间的格式.当然这个函数还不够简化,因为它需要你告诉它日期时间的格式

如果需要再将datetime转换成时间戳timestamp格式,可以参见我之前的文章

Python中timestamp和日期时间的转换


补充个知识点,parsejavascript里面非常常见,例如强制转换类型的函数parseInt,parseFloat,例如解析json的函数是JSON.parse()

以上是关于python中日期字符串与datetime类型的相互转换的主要内容,如果未能解决你的问题,请参考以下文章

python 日期时间字符串相互转换

Python常用模块——time&datetime模块

python中datetime模块中的strftime与strptime

python中datetime模块中的strftime与strptime

python中datetime模块中的strftime与strptime

python中如何把datetime.datetime转换成datetime.time?