在日志文件中,我的日期和时间以以下格式记录: [05 / May / 2010:12:01:15 +0000] 我试图在Python3.x中仅从上面提取时间。我主要是在Python3.x中寻找一个内置的解析器。除了这个,我遇到了不同的格式。我使用下面的代码在JAVA中提出了一个解决方案,我在Python3.x中寻找类似的东西。有吗?或者我是否必须编写自己的解析器来提取日期,时间?这是我想要的JAVA代码:
//field[3] contains "[25/May/2015:23:11:15 +0000]"
String timeStamp = fields[3].substring(1,fields[3].length()).split(" ")[0];
SimpleDateFormat df = new SimpleDateFormat("dd/MMM/yyyy:HH:mm:ss",Locale.US);
Date d = null;
try {
d = df.parse(timeStamp);
} catch (ParseException e) {
e.printStackTrace();
}
System.out.println("Time :"+ d.getTime());// Prints 23:11:15
答案 0 :(得分:1)
您可以使用time.strptime()
将其解析为time.struct_time
对象:
import time
your_field = "[25/May/2015:23:11:15 +0000]"
parsed = time.strptime(your_field, "[%d/%b/%Y:%H:%M:%S %z]")
# NOTE: %z depends on implementation, you might need to remove the timezone info
# before parsing your date/time with `time.strptime()`.
# print time:
print(time.strftime("%H:%M:%S", parsed))
# prints: 23:11:15
但是如果你只是想得到时间你不需要解析它只是为了再次构建它,而是你可以将其子串出来:
your_field = "[25/May/2015:23:11:15 +0000]"
your_time = your_field.split(":", 1)[1].split(" ", 1)[0]
# print time:
print(your_time)
# prints: 23:11:15
答案 1 :(得分:0)
以下是使用datetime.strptime
的解决方案:
from datetime import datetime
field3 = '[25/May/2015:23:11:15 +0000]'
result = datetime.strptime(field3, '[%d/%b/%Y:%H:%M:%S %z]')
print(result.strftime("%H:%M:%S"))
<强>输出强>
23:11:15