ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python-将字符串列表转换为日期时间

2019-10-24 20:58:34  阅读:392  来源: 互联网

标签:timedelta python-datetime datetime 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有