Как будто вы пытаетесь получить доступ к объекту, который является null
. Рассмотрим ниже пример:
TypeA objA;
. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException
, что имеет смысл.
См. Также этот пример:
String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
Используйте datetime.timedelta
класс:
>>> from datetime import datetime, timedelta
>>> then = datetime.now() - timedelta(hours = 2)
>>> now = datetime.now()
>>> (now - then) > timedelta(days = 1)
False
>>> (now - then) > timedelta(hours = 1)
True
Ваш пример мог быть записан как:
if (datetime.now() - self.timestamp) > timedelta(seconds = 100)
или
if (datetime.now() - self.timestamp) > timedelta(minutes = 100)
Сравните различие с timedelta, который Вы создаете:
if datetime.datetime.now() - timestamp > datetime.timedelta(seconds = 5):
print 'older'
Можно использовать комбинацию 'дней' и атрибуты 'секунд' возвращенного объекта для выяснения ответа, как это:
def seconds_difference(stamp1, stamp2):
delta = stamp1 - stamp2
return 24*60*60*delta.days + delta.seconds + delta.microseconds/1000000.
брюшной пресс Использования () в ответе, если Вы всегда хотите положительное число секунд.
Для обнаружения, сколько секунды в прошлое метка времени можно использовать его как это:
if seconds_difference(datetime.datetime.now(), timestamp) < 100:
pass
Можно вычесть два дата и время объекты найти различие между ними.
можно использовать datetime.fromtimestamp
для парсинга метки времени POSIX.
Как так:
# self.timestamp should be a datetime object
if (datetime.now() - self.timestamp).seconds > 100:
print "object is over 100 seconds old"