Python中转换字符串为时间类型

Home

Python中转换字符串为时间类型

python_cookbook tricks

Directory

阅读《Python Cookbook》体验到了不一样的Python,坚持一日一读一练。

问题

当获取数据源后,经常会遇到字符串类型的时间表示形式,python的datetime库提供将字符串转换为时间类型的方法。

解决方案

使用datetimestrptime实现:

>>> from datetime import datetime
>>> text = '2017-06-29'
>>> convert_to_datetime = datetime.strptime(text, '%Y-%m-%d')
>>> now = datetime.now()
>>> diff = now - convert_to_datetime
>>> diff
datetime.timedelta(0, 34299, 56279)

strptime支持多种格式化字符成为时间的转义符,比如讲时间转为易读形式:

>>> now
datetime.datetime(2017, 6, 29, 9, 31, 39, 56279)
>>> stringify = datetime.strftime(now, '%A %B %d %Y')
>>> stringify
'Thursday June 29 2017'

More about datetime.strptime

Cookbook中提出strptime因为转换日期时候必须处理系统本地的设置,所以会存在性能问题。在遇到批量数据处理的时候,如果时间格式已经确定,最好使用自定义函数去处理,这里举个例子:

>>> from datetime import datetime
>>> text = '2017-06-29'
>>> def parse_ymd(s):
...     year, mon, day = s.split('-')
...     return datetime(int(year), int(mon), int(day))
...
>>> parse_ymd(text)
datetime.datetime(2017, 6, 29, 0, 0)