在python中操作DateTime和TimeDelta对象

在python中操作DateTime和TimeDelta对象,python,datetime,timedelta,Python,Datetime,Timedelta,我想知道如何操作Datetime和Time delta对象。我正在写一个游戏,不同的行星有不同的时间尺度。我想知道如何修改datetime对象 例如,如果我有一个日期时间对象-某个过去的日期时间对象,我想知道是否有可能知道6个小时可能进入不同的时间段的次数,以及剩余的分钟数是多少 例如 now = datetime.now() then = some datetime object diff = now - then num 6 hour blocks = diff / 6 (rounded d

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

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

例如

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

谢谢

timedelta
对象只有
days
seconds
microseconds
字段,因此我猜在小时和分钟内,您必须使用
seconds

num_blocks=diff.seconds//(6*3600)
分钟=(不同秒数%(6*3600))//60

在Python 2.7中,timedelta对象有一个total_seconds方法。所以你可以用它来解决这个问题。当从一个datetime对象减去另一个datetime对象时,会得到一个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

你能更好地解释一下你的问题吗。编写伪代码,或者展示您已经尝试过的内容。或者我想另一种措辞方式是有没有办法将timedelta对象处理为双精度或浮点型?您可能还想尝试创建自己的datetime类。这取决于你如何对你的宇宙进行建模,但如果只使用一个恒定的秒,那么每个行星每转一圈(昼夜循环)都有秒数,每绕本地恒星一周都有秒数。