python datetime.strTime:忽略一秒的小数
我正在将人类可读的时间转换为python datetime.strTime:忽略一秒的小数,datetime,floating-point,format,python-2.7,Datetime,Floating Point,Format,Python 2.7,我正在将人类可读的时间转换为datetime对象。为此,我使用了datetime.datetime.strtime 然而,很简单,我所拥有的人类可读时间包含了几分之一秒,这是我无法解析的。如果这是一个常量,我可以将其合并为格式的一部分。然而,由于它不是一个常数,我不能这样做 这就是我现在正在做的: >>> humanTime = '2012/06/10T16:36:20.509Z' >>> datetime.datetime.strptime(humanTim
datetime
对象。为此,我使用了datetime.datetime.strtime
然而,很简单,我所拥有的人类可读时间包含了几分之一秒,这是我无法解析的。如果这是一个常量,我可以将其合并为格式的一部分。然而,由于它不是一个常数,我不能这样做
这就是我现在正在做的:
>>> humanTime = '2012/06/10T16:36:20.509Z'
>>> datetime.datetime.strptime(humanTime, "%Y/%m/%dT%H:%M:%SZ")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "lib/python2.7/_strptime.py", line 325, in _strptime
(data_string, format))
ValueError: time data '2012-06-10T16:36:20.507Z' does not match format '%Y-%m-%dT%H:%M:%SZ'
humanTime='2012/06/10T16:36:20.509Z'
>>>datetime.datetime.StrTime(humanTime,“%Y/%m/%dT%H:%m:%SZ”)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“lib/python2.7/_strptime.py”,第325行,在_strptime中
(数据字符串,格式))
ValueError:时间数据“2012-06-10T16:36:20.507Z”与格式“%Y-%m-%dT%H:%m:%SZ”不匹配
所以我认为这里的问题是,一秒钟的分数是不可解析的。我真的不在乎那一分一秒。除了对字符串进行切片之外,是否有一种方法可以让datetime
忽略一秒钟的分数(最好是使用格式)
我有一种感觉,我可能错过了一些非常基本的东西。如果有任何帮助,我将不胜感激。因为我真的不在乎分秒,我应该只取人类可读字符串的第一个
19
字符,并对其应用一种简单的格式
>>> humanTime = '2012/06/10T16:36:20.509Z'
>>> datetime.datetime.strptime(humanTime[:19], "%Y/%m/%dT%H:%M:%S")
datetime.datetime(2012, 6, 10, 16, 36, 20)
特定问题的解决方案:将%f用于微秒:
>>> datetime.datetime.strptime(humanTime, "%Y/%m/%dT%H:%M:%S.%fZ")
然而,一般情况下,问题仍然存在。如果圆点后的数字超过6位,则此解决方案将不起作用
问题是,据我所知,datetime.datetime.StrTime接受的格式通常不包括浮动秒。解决方法是在创建datetime变量时忽略秒数,然后使用datetime.timedelta添加秒数
>>> import numpy as np
>>> import datetime
>>>
>>> humanTime = '2012/06/10T16:36:20.509Z'
>>> dt_time_no_seconds = datetime.datetime.strptime(humanTime[:-8], "%Y/%m/%dT%H:%M")
>>> seconds = np.float(humanTime[-7:-1])
>>> dt_time = dt_time_no_seconds+datetime.timedelta(seconds=seconds)
>>> dt_time_no_seconds
datetime.datetime(2012, 6, 10, 16, 36)
>>> dt_time
datetime.datetime(2012, 6, 10, 16, 36, 20, 509000)
希望这有帮助。指令
%f
将解释分数秒:
导入日期时间
humanTime='2012/06/10T16:36:20.509Z'
datetime.datetime.StrTime(人类时间,“%Y/%m/%dT%H:%m:%S.%fZ”)
>>datetime.datetime(2012,6,10,16,36,20509000)
熊猫还可以用小数秒解析字符串
将熊猫作为pd导入
humanTime='2012/06/10T16:36:20.509Z'
pd.to_日期时间(人工时间)
>>时间戳('2012-06-10 16:36:20.509000+0000',tz='UTC')
@downvoter:您想告诉我为什么我的问题不好吗?您可以使用%f
解析分数秒