将datetime从给定日期转换为分钟

时间:2012-08-28 08:59:42

标签: python datetime int python-2.6

  

可能重复:
  Python datetime to Unix timestamp

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

4 个答案:

答案 0 :(得分:19)

减去两个datetime.datetime个对象会得到timedelta object,其中有一个.total_seconds() method(在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及更早版本,您必须使用.days.seconds属性来计算分钟数:

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

也会给你一个整数。

答案 1 :(得分:2)

如果您想要两个日期之间的增量分钟,可以通过减去两个日期(请参阅here)来创建datetime.timedelta对象,然后检索此问题中显示的分钟数:

Convert a timedelta to days, hours and minutes

答案 2 :(得分:2)

通过减去日期时间,您可以拥有timedelta。这个timedelta可以分为自己想要的东西:

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

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

答案 3 :(得分: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