python-将字符串列表转换为日期时间
作者:互联网
我正在尝试将字符串列表转换为日期时间.
这是我正在处理的数据的示例:
x = [’59:55:00′,’59:55:00′,’59:58:00′,’1:00:02′,’1:00:05′,’1:01:26′ ]
例如,该列表应该反映59分钟,58秒到1小时,0分钟和5秒.
我知道这是一种古怪的格式,但是我在玩我已经处理过的牌.进入大于59分钟的值后,我不确定如何处理数据.
我尝试使用:
from datetime import datetime
for i in x:
datetime_object = datetime.strptime(i, '%M:%S:%f')
print(datetime_object)
我的结果是:
1900-01-01 00:59:55
1900-01-01 00:59:55
1900-01-01 00:59:58
1900-01-01 00:01:00.020000
1900-01-01 00:01:00.050000
1900-01-01 00:01:01.260000
我想将输出保持为几分钟和几秒钟.
例如1:01:26将是00:61:26
所以我想要的输出看起来像:
1900-01-01 00:59:55
1900-01-01 00:59:55
1900-01-01 00:59:58
1900-01-01 00:60:02
1900-01-01 00:60:02
1900-01-01 00:61:26
任何帮助或指导,我们将不胜感激!
解决方法:
datetime.datetime对象必须采用一定范围内的参数,即分钟必须在0到59之间.但是,您可以创建一个类来处理此所需的行为.该类可以将输入转换为所需的时间戳格式,存储原始字符串,并提供to_date属性以将实际时间戳作为datetime.datetime对象进行检索:
import datetime
class Minutes:
d = datetime.datetime.now()
def __init__(self, _str, _year = None):
self._val = _str
d = datetime.datetime.now()
self.year = _year if _year is not None else '-'.join(str(getattr(d, i)) for i in ['year', 'month', 'day'])
@property
def to_date(self):
return datetime.datetime(*map(int, self.year.split('-')), *map(int, str(self).split(':')))
def __str__(self):
_h, _m, _s = map(int, self._val.split(':'))
h, m, s = 0 if _h else _h, _m+(_h*60) if _h else _m, _s
return f'{self.year} '+':'.join(str(i).zfill(2) for i in [h, m, s])
def __repr__(self):
return str(self)
x = ['59:55:00', '59:55:00', '59:58:00', '1:00:02', '1:00:05', '1:01:26']
new_x = [Minutes(i, '1900-01-01') for i in x]
输出:
[1900-01-01 00:3595:00,
1900-01-01 00:3595:00,
1900-01-01 00:3598:00,
1900-01-01 00:60:02,
1900-01-01 00:60:05,
1900-01-01 00:61:26]
标签:timedelta,python-datetime,datetime,python 来源: https://codeday.me/bug/20191024/1923409.html