在python中操作DateTime和TimeDelta对象

时间:2012-04-02 07:44:15

标签: python datetime timedelta

我想知道如何操作Datetime和Time delta对象。我正在写一个不同行星有不同时间尺度的游戏。我想知道如何修改日期时间对象。

例如,如果我有一个日期时间对象 - 一些过去的日期时间对象,我想知道是否有可能知道6小时可能会进入不同的时间以及余下的分钟数是多少?

例如......

now = datetime.now()
then = some datetime object
diff = now - then
num 6 hour blocks = diff / 6 (rounded down)
minutes = diff % 6

谢谢!

2 个答案:

答案 0 :(得分:2)

timedelta对象在Python 2.7中有一个total_seconds方法。所以你可以用它来解决它。当您从另一个日期时间对象中减去一个日期时间对象时,会得到一个timedelta对象。

from datetime import timedelta

minutes = 60
hours = 60 * minutes
days = 24 * hours

diff = timedelta(days=6)

days_in_the_past = int(diff.total_seconds() / days)
hours_remainder = diff.total_seconds() % days

hours_in_the_past = int(diff.total_seconds() / hours)
seconds_remainder = diff.total_seconds() % hours

这几乎是你想要做的吗?如果您使用的是旧版本的Python,那么您可以定义一个与total_seconds方法完全相同的函数,如下所示:

def total_seconds(timedelta_object):
    return timedelta_object.days * 86400 + timedelta_object.seconds

答案 1 :(得分:0)

timedelta个对象只有dayssecondsmicroseconds个字段,所以我猜你需要花费数小时和几分钟才能使用seconds:< / p>

num_blocks = diff.seconds//(6*3600)
minutes = (diff.seconds%(6*3600))//60