您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何将timedelta转换为字符串并再次返回

5b51 2022/1/14 8:21:56 python 字数 3640 阅读 494 来源 www.jb51.cc/python

Dateutil的timedelta对象似乎有一个自定义__str__方法:In [1]: from datetime import timedelta In [2]: td = timedelta(hours=2) In [3]: str(td) Out[3]: '2:00:00' 我想做的是从字符串表示中重新创建一个timedelta对象.但是,据我

概述

Dateutil的timedelta对象似乎有一个自定义__str__方法

In [1]: from datetime import timedelta

In [2]: td = timedelta(hours=2)

In [3]: str(td)
Out[3]: '2:00:00'

我想做的是从字符串表示中重新创建一个timedelta对象.但是,据我所知,datetime.parser.parse方法将始终返回datetime.datetime对象(参见https://dateutil.readthedocs.io/en/stable/parser.html):

In [4]: import dateutil.parser

In [5]: dateutil.parser.parse(str(td))
Out[5]: datetime.datetime(2016,11,25,2,0)

我现在看到这样做的唯一方法是,按照Convert a timedelta to days,hours and minutes的说法,“破坏一些令人作呕的简单(但冗长的)数学”以获得秒,分,小时等,并将这些数据传回__init__一个新的timedelta.或者是否有更简单的方法

#!/usr/bin/env python3.5
import datetime
import pytimeparse
import unittest

def reconstruct_timedelta(td_string):
    seconds = pytimeparse.parse(td_string)
    return datetime.timedelta(seconds=seconds)

class TestReconstruction(unittest.TestCase):
    def test_reconstruct_timedelta_is_inverse_of_str(self):
        td = datetime.timedelta(weeks=300,days=20,hours=3,minutes=4,milliseconds=254,microseconds=984)
        td_reconstructed = reconstruct_timedelta(str(td))
        self.assertTrue(td == td_reconstructed)

if __name__ == "__main__":
    unittest.main()

从测试中可以看出,重建的timedelta对象与原始对象相同,即使用毫秒和微秒初始化任意数字也是如此.

总结

以上是编程之家为你收集整理的如何将timedelta转换为字符串并再次返回全部内容,希望文章能够帮你解决如何将timedelta转换为字符串并再次返回所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶