编程语言
首页 > 编程语言> > python-将字符串列表转换为日期时间

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