Python вычесть время и запустить цикл if - PullRequest
1 голос
/ 16 декабря 2011

Я хочу сравнить два раза, и если новое время больше 2 минут, тогда оператор if напечатает вывод, я могу получить выходные данные datetime.datetime.now (), но как проверить, является ли старое времяменее чем за 2 минуты?

#!/usr/bin/env python


import datetime
from time import sleep
now = datetime.datetime.now()

sleep(2)

late = datetime.datetime.now()
constant = 2
diff = late-now
if diff <= constant:
    print "True time is less than 2min"
else:
    print "Time exceeds 2 mins"

есть идеи?

ОБНОВЛЕНО:

Теперь я сохраняю старую дату в виде строки в файле, а затем вычитаю ее из текущего времени,старая дата хранится в формате

2011-12-16 16: 14: 50.800856

, поэтому, когда я делаю

now = "2011-12-16 16:14:50.838638"

sleep(2)

nnow = datetime.strptime(now, '%Y-%m-%d %H:%M:%S')

late = datetime.now()

diff = late-nnow

, она выдает мне эту ошибку

ValueError: unconverted data remains: .838638

Ответы [ 3 ]

3 голосов
/ 16 декабря 2011

Вычитание двух datetime экземпляров возвращает timedelta, который имеет метод total_seconds:

contant = 2 * 60
diff = late-now
if diff.total_seconds() <= constant:
2 голосов
/ 17 декабря 2011

Это только ответ на обновление, поскольку ответ от sje397. был идеальным.

Используйте строку формата, подобную этой, чтобы соответствовать всей строке времени:

nnow = datetime.strptime(now, '%Y-%m-%d %H:%M:%S.%f')

% fсоответствует микросекундам после точки.Это новое с Python 2.6.

1 голос
/ 17 декабря 2011

Вы можете сравнить datetime объекты сами по себе:

from datetime import datetime, timedelta

ts = datetime.strptime("2011-12-16 16:14:50.838638Z", '%Y-%m-%d %H:%M:%S.%fZ')
ts += timedelta(minutes=2) # add 2 minutes

if datetime.utcnow() < ts:
   print("time is less")
else:
   print("time is more or equal")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...