协慌网

登录 贡献 社区

将字符串转换为 datetime

简短而简单。我有一个巨大的日期时间列表,像这样的字符串:

Jun 1 2005  1:33PM
Aug 28 1999 12:00AM

我将把它们推回到数据库中的正确日期时间字段中,因此我需要将它们变成真正的日期时间对象。

任何帮助(即使只是向正确的方向踢)都将不胜感激。

编辑:这是通过 Django 的 ORM,所以我不能使用 SQL 来进行插入转换。

答案

datetime.strptime是将字符串解析为日期时间的主要例程。它可以处理各种格式,格式由您提供的格式字符串确定:

from datetime import datetime

datetime_object = datetime.strptime('Jun 1 2005  1:33PM', '%b %d %Y %I:%M%p')

生成的datetime对象是时区的。

链接:

笔记:

  • strptime =“字符串解析时间”
  • strftime =“字符串格式时间”
  • 今天大声发音,你将不必在 6 个月内再次搜索它。

使用第三方dateutil库:

from dateutil import parser
dt = parser.parse("Aug 28 1999 12:00AM")

它可以处理大多数日期格式,包括您需要解析的格式。它比 strptime 更方便,因为它可以在大多数时间猜测正确的格式。

它对于编写测试非常有用,其中可读性比性能更重要。

你可以安装它:

pip install python-dateutil

查看时间模块中的strptime 。这是strftime 的反面

$ python
>>> import time
>>> time.strptime('Jun 1 2005  1:33PM', '%b %d %Y %I:%M%p')
time.struct_time(tm_year=2005, tm_mon=6, tm_mday=1,
                 tm_hour=13, tm_min=33, tm_sec=0,
                 tm_wday=2, tm_yday=152, tm_isdst=-1)