Python 我想创建一个时间类,它有不同的时间单位作为方法
我想创建一个时间类,将“数量”和“单位”作为其输入 i、 e 我希望能够有不同的时间单位作为方法,以便任何时间都可以快速转换为任何其他时间单位 i、 e 我有一个时间单位及其对应的秒值(我使用的最小时间单位)的字典,因此输入的任何时间都可以转换为秒Python 我想创建一个时间类,它有不同的时间单位作为方法,python,python-3.x,Python,Python 3.x,我想创建一个时间类,将“数量”和“单位”作为其输入 i、 e 我希望能够有不同的时间单位作为方法,以便任何时间都可以快速转换为任何其他时间单位 i、 e 我有一个时间单位及其对应的秒值(我使用的最小时间单位)的字典,因此输入的任何时间都可以转换为秒 time_dict = {'seconds': 1, 'minutes': 60, 'hours': 3600, 'days': 86400, 'weeks': 604800, 'years': 31556952, 'decades': 315569
time_dict = {'seconds': 1, 'minutes': 60, 'hours': 3600, 'days': 86400, 'weeks': 604800, 'years': 31556952, 'decades': 315569520, 'centuries': 3155695200, 'millennia': 31556952000}
因此,从一个时间单位到另一个时间单位的转换只需要将数量乘以单位(以秒为单位)并除以所需单位(以秒为单位)。我的问题是:
timedelta
对象,然后timedelta.total_seconds()
将给出秒数。在那之后,计算天数等只是数学timedelta
甚至通过实施除法操作为您简化了它。例如,timedelta(天=1)/timedelta(小时=1)
给出了24.0
3.是的,存在着非常相似的情况。timedelta不是用来计算两个给定时间之间的持续时间吗?它可以任意地从一个单位的时间转换到另一个类似的庄园作为我试图完成?谢谢你的信息。关于您提到的关于一年中天数的问题,这个用例不需要担心,因为我没有使用像2020年这样的特定年份(可能涉及闰年等)。1年只是一个标准年,有一个标准秒数,因为我处理的是时间单位,而不是实际日期。那么,“乘数”前面的下划线的意义是什么?@StephenWilliams按照惯例,一个前导下划线表示“私有变量”,当然,因为Python并不真正支持私有变量,所以它本质上只是PEP所称的“弱内部使用指示器”。明白了!非常感谢。我很容易就能得到我想要的
x.seconds()
x.hours()
time_dict = {'seconds': 1, 'minutes': 60, 'hours': 3600, 'days': 86400, 'weeks': 604800, 'years': 31556952, 'decades': 315569520, 'centuries': 3155695200, 'millennia': 31556952000}
class timespan:
_multiplier = {'seconds': 1, 'minutes': 60, 'hours': 3600, 'days': 3600*24, 'weeks': 3600*24*7}
def __init__(self, number, unit):
self.num_seconds = number * timespan._multiplier[unit]
def days(self):
return self.num_seconds / timespan._multiplier['days']
def hours(self):
return self.num_seconds / timespan._multiplier['hours']