Я хочу сравнить два раза, и если новое время больше 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
Вычитая два datetime
- timedelta
total_seconds
datetime
экземпляров возвращает timedelta
, который имеет total_seconds
метод:
contant = 2 * 60
diff = late-now
if diff.total_seconds() <= constant:
Это только ответ на обновление, так как ответ sje397 был идеальным.
Используйте строку формата, подобную этой, чтобы соответствовать всей строке времени:
nnow = datetime.strptime(now, '%Y-%m-%d %H:%M:%S.%f')
Значение% f соответствует микросекундам после точки. Это новое с Python 2.6.
Вы можете сравнивать объекты 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")