8

可能重复:
Python 日期时间到 Unix 时间戳

有没有办法将 a 转换datetimeint,表示自 2012 年 1 月以来的分钟数,以便int可以对其进行修改、写入数据库、进行比较等等?编辑:我运行它的服务器使用 Python 2.6.6

4

4 回答 4

26

减去两个datetime.datetime对象会给你一个timedeltaobject,它有一个.total_seconds()方法(在 Python 2.7 中添加)。将其除以 60 并转换int()为自参考日期以来的分钟数:

import datetime

january1st = datetime.datetime(2012, 01, 01)
timesince = datetime.datetime.now() - january1st
minutessince = int(timesince.total_seconds() / 60)

或在 python shell 中:

>>> import datetime
>>> january1st = datetime.datetime(2012, 01, 01)
>>> timesince = datetime.datetime.now() - january1st
>>> minutessince = int(timesince.total_seconds() / 60)
>>> minutessince
346208

对于 python 2.6 及更早版本,您必须使用.daysand.seconds属性来计算分钟数:

minutessince = timesince.days * 1440 + timesince.seconds // 60

这也给了你一个整数。

于 2012-08-28T09:07:49.770 回答
2

如果您想要两个日期之间的 delta 分钟,您可以datetime.timedelta通过减去两个日期来创建一个对象(请参阅此处),然后检索分钟,如本问题所示:

将 timedelta 转换为天、小时和分钟

于 2012-08-28T09:04:14.823 回答
2

通过减去日期时间,您可以获得时间增量。这个 timedelta 可以自己划分给你你想要的:

(datetime.datetime.now() - datetime.datetime(2012, 1, 1)) // datetime.timedelta(minutes=1)

(此代码仅对 python3 有效,这就是为什么每个人都应该切换到 python3 ;-))

于 2012-08-28T09:04:42.280 回答
1
>>> import datetime
>>> now = datetime.datetime.now()
>>> then  = datetime.datetime(year=2012, month=1, day=1)
>>> delta=now-then

这是一个表示时间间隔的 timedelta 对象。

>>> print delta
240 days, 11:05:25.507000

要计算该间隔内的分钟数,请使用:

>>> print delta.total_seconds() / 60
346265.42511666665
于 2012-08-28T09:08:09.253 回答