Python读取日志文件,时间戳包括微秒

时间:2011-03-22 00:11:23

标签: python datetime time

我在日志文件中有一个时间戳,格式如下:

2010-01-01 18:48:14.631829

我尝试了像strptime这样的常见嫌疑人,无论我做什么,我都知道它与我指定的格式不符。 ("%Y-%m-%d %H:%M:%S" OR "%Y-%m-%d %H:%M:%S.%f")

我甚至尝试将值拆分为“。”所以我可以比较没有微秒的值,但它仍然告诉我它不匹配:“%Y-%m-%d%H:%M:%S”

Ug,我需要做的只是一个简单的时间三角洲,哈哈。为什么python的时间如此分散?时间,日期时间,其他各种进口

3 个答案:

答案 0 :(得分:4)

您可以像这样使用strptime(仅限Python 2.6+):

>>> import datetime
>>> s = "2010-01-01 18:48:14.631829"
>>> datetime.datetime.strptime(s, "%Y-%m-%d %H:%M:%S.%f")
datetime.datetime(2010, 1, 1, 18, 48, 14, 631829)

文档:http://docs.python.org/library/datetime.html#strftime-and-strptime-behavior

  

...

     

%f微秒作为十进制数[0,999999],左边填零

     

...

如果你的2.5- 你不关心微型,你可以把它砍掉:

>>> import re
>>> datetime.datetime.strptime(re.sub('\..*', '', s), "%Y-%m-%d %H:%M:%S")
datetime.datetime(2010, 1, 1, 18, 48, 14)

答案 1 :(得分:0)

当然,拆分字符串 可以工作:

>>> print s
2010-01-01 18:48:14.631829
>>> time.strptime(s.split('.')[0], "%Y-%m-%d %H:%M:%S")
time.struct_time(tm_year=2010, tm_mon=1, tm_mday=1, tm_hour=18, tm_min=48, tm_sec=14, tm_wday=4, tm_yday=1, tm_isdst=-1)
>>> 

答案 2 :(得分:0)

以下适用于我(Python 2.6):

>>> import datetime
>>> string1 = '2010-01-01 18:48:14.631829'
>>> string2 = '2010-01-09 13:04:39.540268'
>>> time1 = datetime.datetime.strptime(string1, '%Y-%m-%d %H:%M:%S.%f')
>>> time2 = datetime.datetime.strptime(string2, '%Y-%m-%d %H:%M:%S.%f')
>>> time2 - time1
datetime.timedelta(7, 65784, 908439)

,即两个日期之间有7天,65784秒和908439微秒。有关timedelta对象的信息,请参阅datetime docs

修改:如果您无法使用%f指令,请尝试以下操作:

>>> time1 = datetime.datetime.strptime(string1.split('.')[0], '%Y-%m-%d %H:%M:%S')
>>> time2 = datetime.datetime.strptime(string2.split('.')[0], '%Y-%m-%d %H:%M:%S')
>>> time2 - time1
datetime.timedelta(7, 65785)