Tengo una fecha en formato AAAAMMDD y un tiempo en el formato HHMMSS como cadenas en el 4to y 5to elementos en una lista. I. E.:

data[4] = '20100304'
data[5] = '082835'

Estoy creando una instancia de datetime (en un campo denominado genera) como este:

generatedtime = datetime.datetime(int(data[4][:4]),int(data[4][4:6]),int(data[4][6:]),int(data[5][:2]),int(data[5][2:4]),int(data[5][4:6]))

Dado que el formato de entrada no se puede cambiar, hay un modo más limpio que yo debería ser la creación de mi instancia del objeto datetime?

El código, mientras que torpe buscando, hace bien su trabajo.

OriginalEl autor Wes | 2010-03-04

4 Comentarios

  1. 40

    No hay necesidad de importar time; datetime.datetime.strptime puede hacerlo por sí mismo.

    import datetime
    dt=datetime.datetime.strptime(data[4]+data[5],'%Y%m%d%H%M%S')
    print(dt)
    # 2010-03-04 08:28:35

    Para obtener información sobre los códigos de formato (por ejemplo,%Y%m%d%H%M%S) disponibles, consulte la docs para strftime.

    Si la marca no está especificado, el tiempo será tratada como la hora local. El ejemplo siguiente convierte una hora UTC para Unix timestamp: datetime.datetime.strptime(timeval, "%Y%m%d%H%M%S").replace(tzinfo=datetime.timezone.utc).timestamp() (en realidad yo uso este para analizar un FTP MDTM respuesta)

    OriginalEl autor unutbu

  2. 4

    Usted puede echar un vistazo a tiempo.strptime.

    import time
    time.strptime('20100304 082835', '%Y%m%d %H%M%S')

    Lo anterior supone un reloj de 24 horas (%H). Uso %I si en lugar de usar un reloj de 12 horas.

    Para obtener una lista completa de los formatos disponibles directivas, consulte la documentación de tiempo.strftime

    OriginalEl autor Mark Biek

  3. 0
    import time, datetime
    
    x = time.strptime("30 Nov 00", "%d %b %y")
    datetime.datetime(x)

    También puede proporcionar su propio formato de la cadena de fecha, aquí es doc.

    OriginalEl autor gruszczy

  4. 0

    Usted puede limpiar su código existente un poco con un generador (equivalente a un mapa):

    generatedtime = datetime.datetime( *(int(x) for x in
       (data[4][:4], data[4][4:6], data[4][6:], data[5][:2], data[5][2:4],data[5][4:6])
       ) )

    o incluso, si estás loco como un zorro, podría hacer que el datetime declaración, incluso limpiador (a expensas de la adición de un ridículo línea):

    slices = ( (4, slice(4)), (4, slice(4,6) ), (4, slice(6,None)), (5, slice(2) ), (5, slice(2,4) ), (5, slice(4,6)) )
    generatedtime = datetime.datetime( *(int(data[i][s]) for (i,s) in slices) )

    OriginalEl autor Seth Johnson

Dejar respuesta

Please enter your comment!
Please enter your name here