栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在Python中将datetime.timedelta转换为分钟和小时?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在Python中将datetime.timedelta转换为分钟和小时?

没有用于

timedelta
对象的内置格式化程序,但是您自己可以很容易地做到这一点:

days, seconds = duration.days, duration.secondshours = days * 24 + seconds // 3600minutes = (seconds % 3600) // 60seconds = seconds % 60

或者,等效地,如果您使用的是Python 2.7+或3.2+:

seconds = duration.total_seconds()hours = seconds // 3600minutes = (seconds % 3600) // 60seconds = seconds % 60

现在,您可以根据需要打印它:

'{} minutes, {} hours'.format(minutes, hours)

例如:

def convert_timedelta(duration):    days, seconds = duration.days, duration.seconds    hours = days * 24 + seconds // 3600    minutes = (seconds % 3600) // 60    seconds = (seconds % 60)    return hours, minutes, secondstd = datetime.timedelta(2, 7743, 12345)hours, minutes, seconds = convert_timedelta(td)print '{} minutes, {} hours'.format(minutes, hours)

这将打印:

9 minutes, 50 hours

如果要获取“ 10分钟1小时”而不是“ 10分钟1小时”,则也需要手动执行此操作:

print '{} minute{}, {} hour{}'.format(minutes, 's' if minutes != 1 else '',     hours, 's' if minutes != 1 else '')

或者,您可能想编写一个

english_plural
函数
's'
为您完成这些操作,而不是重复自己。

从您的评论看来,您实际上是想让日子分开。这更容易:

def convert_timedelta(duration):    days, seconds = duration.days, duration.seconds    hours = seconds // 3600    minutes = (seconds % 3600) // 60    seconds = (seconds % 60)    return days, hours, minutes, seconds

如果要将其转换为单个值以存储在数据库中,然后将该单个值转换回以对其进行格式化,请执行以下操作:

def dhms_to_seconds(days, hours, minutes, seconds):    return (((days * 24) + hours) * 60 + minutes) * 60 + secondsdef seconds_to_dhms(seconds):    days = seconds // (3600 * 24)    hours = (seconds // 3600) % 24    minutes = (seconds // 60) % 60    seconds = seconds % 60    return days, hours, minutes, seconds

因此,将其放在一起:

def store_timedelta_in_database(thingy, duration):    seconds = dhms_to_seconds(*convert_timedelta(duration))    db.execute('INSERT INTO foo (thingy, duration) VALUES (?, ?)',    thingy, seconds)    db.commit()def print_timedelta_from_database(thingy):    cur = db.execute('SELECt duration FROM foo WHERe thingy = ?', thingy)    seconds = int(cur.fetchone()[0])    days, hours, minutes, seconds = seconds_to_dhms(seconds)    print '{} took {} minutes, {} hours, {} days'.format(thingy, minutes, hours, days)


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/640818.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号