如何在Python中获取自某日期以来的小时数

2 投票
2 回答
4323 浏览
提问于 2025-04-17 19:41

我有一个函数,叫做 getHoursSince()

def getHoursSince (date):

    prior = datetime.datetime.now() - datetime.timedelta(days=date)

    priorHour = prior.hour

    hoursSinceDate = ...

    return hoursSinceDate

这个函数可以让我根据一个固定的值来获取一个日期对象,比如说如果 yesterday = 1,我就可以调用 getHoursSince(yesterday)。但是我不知道怎么计算现在的时间 datetime.datetime.now()priorHour 变量之间的小时数——有没有什么好主意?

2 个回答

2

timedelta.total_seconds() 的文档中提到:

如果你想用秒以外的单位来表示时间间隔,可以直接用除法的方式来计算(比如 td / timedelta(microseconds=1))。

在这个例子中,具体的写法是这样的:

def getHoursSince(date):
    return datetime.timedelta(days=date) // datetime.timedelta(hours=1)
4

你这样做是不对的;你只需要把 timedelta() 转换成小时就可以了:

def getHoursSince(date):
    return int(datetime.timedelta(days=date).total_seconds() // 3600)

这样就能得到:

>>> getHoursSince(1)
24
>>> getHoursSince(1.5)
36
>>> getHoursSince(2)
48
>>> getHoursSince(3)
72

不过你也可以用简单的数学运算来算:

def getHoursSince(date):
    return int(24 * date)

撰写回答