我想只获取此日期格式的时间数据?在下面的例子中是23:55:00。我尝试了很多方法,包括datetime.strptime
,from dateutil import parser
等,但都失败了。 :(如何用Python做到这一点?
[15/Apr/2013:23:55:00 +0530]
答案 0 :(得分:6)
假设您可以将“日期”作为字符串访问:
>>> from datetime import datetime
>>> time_string = "[15/Apr/2013:23:55:00 +0530]"
>>> format = "[%d/%b/%Y:%H:%M:%S %z]"
>>> dt = datetime.strptime(time_string, format)
>>> dt
datetime.datetime(2013, 4, 15, 23, 55, tzinfo=datetime.timezone(datetime.timedelta(0, 19800)))
# Accessing the time as an object:
>>> the_time = dt.time()
>>> the_time
datetime.time(23, 55)
# Accessing the time as a string:
>>> the_time.strftime("%H:%M:%S")
'23:55:00'
如果你肯定确定日期有修复格式,你可以切片你的字符串:
>>> time_string = "[15/Apr/2013:23:55:00 +0530]"
>>> time_string[-15:-7]
'23:55:00'
这只是一个例子。 Python有很多字符串操作函数可能更适合您的数据。不要犹豫,看看他们!
答案 1 :(得分:1)
可以使用正则表达式来抓住时间部分
import re
date = '15/Apr/2013:23:55:00 +0530'
regex = ':(?P<time>[0-9]{2}:[0-9]{2}:[0-9]{2})'
just_time = re.search(regex, date).groupdict()['time']
答案 2 :(得分:0)
由于你对字符串感兴趣而不是时间对象,你可以这样做:
>>> s = '[15/Apr/2013:23:55:00 +0530]'
>>> s[13:21]
23:55:00
如果您打算用字符串进行一些时间计算,则只需要datetime
;但是因为你忽略了时区,听起来你需要的只是表示时间的字符串。
当然,如果您愿意,可以随时将转换为时间对象:
>>> import time
>>> t = time.strptime(s[13:21], '%H:%M:%S')