在 Python 3.4 中将 datetime.time 转换为 datetime.timedelta [英] Convert datetime.time into datetime.timedelta in Python 3.4

查看:28
本文介绍了在 Python 3.4 中将 datetime.time 转换为 datetime.timedelta的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试转换两个持续时间",但是我目前收到一个 TypeError 由于一个是 datetime.timedelta 而一个是 datetime.time:

TypeError: unorderable types: datetime.time() <= datetime.timedelta()

datetime.time 转换为 datetime.timedelta 的有效方法是什么?

我检查了 docs 并且没有构建-in 这两种类型之间的转换方法.

解决方案

datetime.time() 不是持续时间,它是一天中的一个点.如果要将其解释为持续时间,则将其转换为自午夜以来的持续时间:

datetime.combine(date.min, timeobj) - datetime.min

演示:

<预><代码>>>>从日期时间导入日期时间,日期,时间>>>timeobj = time(12, 45)>>>datetime.combine(date.min, timeobj) - datetime.mindatetime.timedelta(0, 45900)

您可能首先需要检查如何获得 datetime.time() 对象,也许有一个更短的路径到 timedelta() 从你有输入数据吗?例如,不要将 datetime.time.strptime() 用于持续时间.

I am trying to convert two "durations", however I am currently receiving a TypeError due to one being a datetime.timedelta and one being a datetime.time:

TypeError: unorderable types: datetime.time() <= datetime.timedelta()

What is an efficient way to convert a datetime.time to a datetime.timedelta?

I have checked the docs and there is no built-in method for conversion between these two types.

解决方案

datetime.time() is not a duration, it is a point in a day. If you want to interpret it as a duration, then convert it to a duration since midnight:

datetime.combine(date.min, timeobj) - datetime.min

Demo:

>>> from datetime import datetime, date, time
>>> timeobj = time(12, 45)
>>> datetime.combine(date.min, timeobj) - datetime.min
datetime.timedelta(0, 45900)

You may need to examine how you get the datetime.time() object in the first place though, perhaps there is a shorter path to a timedelta() from the input data you have? Don't use datetime.time.strptime() for durations, for example.

这篇关于在 Python 3.4 中将 datetime.time 转换为 datetime.timedelta的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆