2

我只想获取此日期格式的时间数据?在以下情况下,它是 23:55:00。我尝试了很多方法,包括等datetime.strptimefrom dateutil import parser但都失败了。:( 如何用 Python 做到这一点?

[15/Apr/2013:23:55:00 +0530]
4

3 回答 3

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 有大量的字符串操作函数,可能更适合您的数据。不要犹豫,看看他们!

于 2013-06-11T05:49:54.233 回答
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']
于 2013-06-11T06:30:33.470 回答
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')
于 2013-06-11T06:43:31.880 回答