关于python:将带有日期和时间的字符串转换为日期

Convert a string with date and time to a date

本问题已经有最佳答案,请猛点这里访问。

我有这个日期时间字符串:

1
post["date"] ="2007-07-18 10:03:19"

我只想提取"2007-07-18"作为日期。我看到过一些关于strptime的参考,但我不知道如何使用它。如何从这个字符串中提取日期?


其他两个答案是可以的,但是如果您真的想知道其他事情的日期,您可以使用datetime模块:

1
2
3
from datetime import datetime
d = datetime.strptime('2007-07-18 10:03:19', '%Y-%m-%d %H:%M:%S')
day_string = d.strftime('%Y-%m-%d')

现在可能是杀伤力太大了,但会有用的。您可以在这里看到所有的格式说明符。


在您的情况下,只需使用拆分:

1
2
3
4
>>> d1="2007-07-18 10:03:19"
>>> d1.split()[0]
'2007-07-18'
>>>

(用空格拆分后的第一部分)

如果您坚持使用strptime,格式为"%Y-%m-%d %H:%M:%S"

1
2
3
4
5
6
>>> import time
>>> time.strptime(d1,"%Y-%m-%d %H:%M:%S")
time.struct_time(tm_year=2007, tm_mon=7, tm_mday=18, tm_hour=10, tm_min=3, tm_sec=19, tm_wday=2, tm_yday=199, tm_isdst=-1)
>>> time.strftime("%Y-%m-%d", _)
'2007-07-18'
>>>


您可以使用https://pypi.python.org/pypi/python-dateutil,它可以支持任何日期时间格式,例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
>>> from dateutil.parser import parse
>>> d1="2007-07-18 10:03:19"
>>> date_obj = parse(d1)
>>> date_obj
datetime.datetime(2007, 7, 18, 10, 3, 19)
>>> date_obj.strftime("%Y-%m-%d")
'2007-07-18'
>>> d2 ="18-07-2007 10:03:19"
>>> d = parse(d2)
>>> d
datetime.datetime(2007, 7, 18, 10, 3, 19)
>>> d.strftime("%Y-%m-%d")
'2007-07-18'


可能不是您要找的,但您可以拆分字符串:

1
post["date"].split()[0]

会给你一个


您可以使用parsedatetime模块。

1
2
3
4
>>> from parsedatetime.parsedatetime import Calendar
>>> c = Calendar()
>>> c.parse("2007-07-18 10:03:19")
((2008, 11, 19, 10, 3, 19, 2, 324, 0), 2)


您可以使用egenix的mx.DateTime模块

1
2
3
4
import mx

date_object = mx.DateTime.Parser.DateTimeFromString('2007-07-18 10:03:19')
print"%s-%s-%s" % (date_object.year, date_object.month, date_object.day)

将输出:2007-07-18


1
2
3
import dateutil.parser
a ="2007-07-18 10:03:19"
d = dateutil.parser.parse(b).date()

你的输出将是这样的**

datetime.date(2007, 07, 18)

**