我在日志文件中有一个时间戳,格式如下:
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的时间如此分散?时间,日期时间,其他各种进口
答案 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)