2

我有一个接受日期并返回当时与当前时间之间的时间差(以秒为单位)的函数。它适用于不到一天的一切。但是当我输入一个未来一年的日期时,它仍然返回一个大约 84,000 秒的数字(一天大约有 86,400 秒)。

def calc_time(date):
    future_date = str(date)
    t_now = str(datetime.utcnow())
    t1 = datetime.strptime(t_now, "%Y-%m-%d %H:%M:%S.%f")
    t2 = datetime.strptime(future_date, "%Y-%m-%d %H:%M:%S.%f")
    return ((t2-t1).seconds)

即使我使用日期为 2014 年的参数运行它,我得到的数字也太低了。

任何人有任何见解?

4

3 回答 3

5

阅读datetime.timedelta文档。

所有参数都是可选的,默认为 0。参数可以是整数、长整数或浮点数,并且可以是正数或负数。

内部仅存储天、秒和微秒。参数被转换为这些单位:

一毫秒转换为 1000 微秒。一分钟转换为 60 秒。一小时转换为 3600 秒。一周转换为 7 天。然后对天、秒和微秒进行归一化,以便表示是唯一的,其中

0 <= 微秒 < 1000000 0 <= 秒 < 3600*24 (一天的秒数) -999999999 <= 天 <= 999999999

解决方案是使用.total_seconds()而不是.seconds

于 2013-05-01T09:25:04.893 回答
0

啊。显然 .seconds 只会返回一天范围内的秒数差异。

.seconds 将包括小时和分钟,因此我需要将其添加到 .days*86400 以获得总秒数。

谢谢大家的帮助!;D

于 2013-05-04T06:41:42.123 回答
0

以下代码将返回两个给定日期之间的天数

$daysremaining = ceil(abs(strtotime($yourdate) - strtotime($currentdate)) / 86400);

并获得秒使用的差异

$secondsremaining = strtotime($yourdate) - strtotime($currentdate);

有用的话点个赞

于 2013-05-01T12:34:55.333 回答