Управление объектами DateTime и TimeDelta в python - PullRequest
2 голосов
/ 02 апреля 2012

Мне интересно, как манипулировать объектами 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

Спасибо!

Ответы [ 2 ]

2 голосов
/ 02 апреля 2012

Объекты timedelta имеют метод total_seconds в Python 2.7. Таким образом, вы можете использовать это, чтобы решить это. Вы получаете объект timedelta, когда вычитаете один объект datetime из другого.

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
0 голосов
/ 02 апреля 2012

timedelta объекты имеют только поля days, seconds и microseconds, поэтому я думаю, что в течение нескольких часов и минут вам придется использовать seconds:

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