Python вычесть время и запустить цикл if

1

Я хочу сравнить два раза, и если новое время больше 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
  • 0
    diff это объекты datetime.timedelta и имеет метод .totalseconds () или свойство .seconds
  • 0
    спасибо Ёсукесабай
Теги:
debian

3 ответа

3
Лучший ответ

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

contant = 2 * 60
diff = late-now
if diff.total_seconds() <= constant:
  • 0
    спасибо sje397, что сработало
  • 0
    Не беспокойся, @krisdigitx ... Просто я в последнее время часто использую это на работе :)
2

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

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

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

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

1

Вы можете сравнивать объекты 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")

Ещё вопросы

Сообщество Overcoder
Наверх
Меню