Python Faker Datetime Generation devuelve una tupla con fecha y hora, en lugar de solo fecha y hora

CorePress2024-01-24  11

Para fines de prueba, quiero comparar dos objetos de fecha y hora.

dt1 = fake.date_time() # assumming 2021-03-25 08:56:12

estructura dt1

dt2 = datetime.datetime.strptime('2021-03-25 08:56:12', "%Y-%m-%d %H:%M:%S")

estructura dt2

La comparación falla cuando intento comparar un objeto de fecha y hora con una tupla que tiene un objeto de fecha y hora.

Si trato de asignar simplemente el primer elemento de la tupla (dt1) así:

dt1 = fake.date_time()[0]

Recibo el siguiente error:

Error al asignar directamente el elemento tupla

Pero si hago lo siguiente, funciona:

dt1 = fake.date_time()
dt1 = dt1[0]

¿Qué no entiendo aquí? :( ¿Y por qué el farsante no devuelve directamente una fecha y hora?

Gracias por cualquier ayuda.

Yo uso Python 3.7 y Faker 6.6.2.



------------------------------------

Mientras preparaba todo el código para pasarlo aquí, descubrí el problema.

Copié esta línea de una definición de diccionario y tenía la coma al final...

dt = fake.date_time(),

Obviamente, Python crea una tupla, pero no vi esto.

Respondido

27 de marzo de 2021 a las 9:27

mandano

mandano

61

5

5 insignias de bronce



------------------------------------

Si marca la función Faker date_time amargaEn este código verás solo un único objeto datetime.datetime:

def date_time(self, tzinfo=None, end_datetime=None):
    """
    Get a datetime object for a date between January 1, 1970 and now
    :param tzinfo: timezone, instance of datetime.tzinfo subclass
    :example DateTime('2005-08-16 20:39:21')
    :return datetime
    """
    # NOTE: On windows, the lowest value you can get from windows is 86400
    #       on the first day. Known python issue:
    #       https://bugs.python.org/issue30684
    return datetime(1970, 1, 1, tzinfo=tzinfo) + \
        timedelta(seconds=self.unix_time(end_datetime=end_datetime))

Sospecho que se ha aplicado un cambio no deseado al objeto dt1 (o también puede ser un error del depurador), como puedo ver en el error que indica claramente que el objeto datetime.datetime no tiene subíndices. ¿Agregarías el código completo para realizar más comprobaciones?

0

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare