Python中的内置解析器,用于处理日期:05 / May / 2010:12:01:15 +0000

时间:2017-05-19 20:43:43

标签: python-3.x datetime

在日志文件中,我的日期和时间以以下格式记录: [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

2 个答案:

答案 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