如何将以下字符串转换为datetime对象?
"Jun 1 2005 1:33PM"
如何将以下字符串转换为datetime对象?
"Jun 1 2005 1:33PM"
当前回答
将yyyy-mm-dd日期字符串映射到datetime.date对象的简短示例:
from datetime import date
date_from_yyyy_mm_dd = lambda δ : date(*[int(_) for _ in δ.split('-')])
date_object = date_from_yyyy_mm_dd('2021-02-15')
其他回答
Python>=3.7
要将YYYY-MM-DD字符串转换为datetime对象,可以使用datetime.fromisoformat。
from datetime import datetime
date_string = "2012-12-12 10:10:10"
print (datetime.fromisoformat(date_string))
2012-12-12 10:10:10
文档中的注意事项:
这不支持解析任意的ISO 8601字符串-它只是作为datetime.isoformat()的反操作。第三方包dateutil中提供了一个功能更全面的ISO 8602解析器dateutil.parser.isorse。
查看时间模块中的strptime。它是strftime的逆。
$ python
>>> import time
>>> my_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)
timestamp = time.mktime(my_time)
# convert time object to datetime
from datetime import datetime
my_datetime = datetime.fromtimestamp(timestamp)
# convert time object to date
from datetime import date
my_date = date.fromtimestamp(timestamp)
您还可以查看dateparser:
dateparser提供了模块,可以在几乎网页上常见的任何字符串格式。
安装:
pip install dateparser
我认为这是解析日期的最简单方法。
最直接的方法是使用dateparser.parse函数,它包含了模块中的大部分功能。
示例代码:
import dateparser
t1 = 'Jun 1 2005 1:33PM'
t2 = 'Aug 28 1999 12:00AM'
dt1 = dateparser.parse(t1)
dt2 = dateparser.parse(t2)
print(dt1)
print(dt2)
输出:
2005-06-01 13:33:00
1999-08-28 00:00:00
Django时区感知日期时间对象示例。
import datetime
from django.utils.timezone import get_current_timezone
tz = get_current_timezone()
format = '%b %d %Y %I:%M%p'
date_object = datetime.datetime.strptime('Jun 1 2005 1:33PM', format)
date_obj = tz.localize(date_object)
当USE_TZ=True时,这种转换对于Django和Python非常重要:
RuntimeWarning: DateTimeField MyModel.created received a naive datetime (2016-03-04 00:00:00) while time zone support is active.
将yyyy-mm-dd日期字符串映射到datetime.date对象的简短示例:
from datetime import date
date_from_yyyy_mm_dd = lambda δ : date(*[int(_) for _ in δ.split('-')])
date_object = date_from_yyyy_mm_dd('2021-02-15')