yyyy from create python datetime

from - python datetime to timestamp



Comparaciones de Python Date (6)

Al igual que:

# self.timestamp should be a datetime object if (datetime.now() - self.timestamp).seconds > 100: print "object is over 100 seconds old"

Me gustaría saber si un objeto python datetime es anterior a X horas o minutos. Estoy tratando de hacer algo similar a:

if (datetime.now() - self.timestamp) > 100 # Where 100 is either seconds or minutes

Esto genera un error de tipo.

¿Cuál es la forma correcta de hacer una comparación de fecha y hora en python? Ya he visto WorkingWithTime que está cerca, pero no exactamente lo que quiero. Supongo que solo quiero que el objeto datetime se represente en segundos para que pueda hacer una comparación int normal.

Por favor, publique listas de las mejores prácticas de datetime.


Alternativa:

if (datetime.now() - self.timestamp).total_seconds() > 100:

Suponiendo que self.timestamp es una instancia de fecha y hora


Compare la diferencia con un timedelta que crea:

if datetime.datetime.now() - timestamp > datetime.timedelta(seconds = 5): print ''older''


Puede restar dos objetos de datetime para encontrar la diferencia entre ellos.
Puede usar datetime.fromtimestamp para analizar una marca de tiempo POSIX.


Puede usar una combinación de los atributos ''días'' y ''segundos'' del objeto devuelto para descubrir la respuesta, como esta:

def seconds_difference(stamp1, stamp2): delta = stamp1 - stamp2 return 24*60*60*delta.days + delta.seconds + delta.microseconds/1000000.

Use abs () en la respuesta si siempre quiere una cantidad positiva de segundos.

Para descubrir cuántos segundos en el pasado es una marca de tiempo, puede usarla así:

if seconds_difference(datetime.datetime.now(), timestamp) < 100: pass


Use la clase 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

Tu ejemplo podría escribirse como:

if (datetime.now() - self.timestamp) > timedelta(seconds = 100)

o

if (datetime.now() - self.timestamp) > timedelta(minutes = 100)