2

Datetime および Time デルタ オブジェクトを操作する方法を考えています。異なる惑星が異なるタイムスケールを持つゲームを書いています。そして、datetime オブジェクトを変更する方法を知りたいと思っていました。

たとえば、日時オブジェクトがある場合-過去の日時オブジェクトがある場合、6時間が何回異なるのか、残りは何分かを知ることができるかどうか疑問に思っていましたか?

例えば...

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

ありがとう!

4

2 に答える 2

3

timedeltaオブジェクトには、Python2.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
于 2012-04-02T08:55:51.923 に答える
0

timedeltaオブジェクトにはフィールドとフィールドしかないのでdays、何時間も何分も使用する必要があると思います。secondsmicrosecondsseconds

num_blocks = diff.seconds//(6*3600)
minutes = (diff.seconds%(6*3600))//60
于 2012-04-02T08:30:03.320 に答える