将包含日期和时间的字符串转换为日期

时间:2008-11-19 10:45:01

标签: python datetime

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

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

我想提取“2007-07-18”作为约会。我已经看到了strptime的一些参考,但我不确定如何使用它。如何从此字符串中提取日期?

7 个答案:

答案 0 :(得分:58)

其他两个答案都很好,但如果你真的想要其他的日期,你可以使用datetime模块:

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')

现在可能有点矫枉过正,但它会有用。您可以看到所有格式说明符here

答案 1 :(得分:8)

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

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

(用空格分割后的第1部分)

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

>>> 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'
>>> 

答案 2 :(得分:2)

可能不是你想要的,但你可以拆分字符串:

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

会给你'2007-07-18'

答案 3 :(得分:2)

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

>>> 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'

答案 4 :(得分:1)

您可以使用eGenix

中的mx.DateTime模块
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

答案 5 :(得分:1)

您可以使用parsedatetime模块。

>>> 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)

答案 6 :(得分:0)

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

您的输出将是这样的 **

  

datetime.date(2007,07,18)

**