2010-03-11 9 views
8

Quiero pasar un valor de fecha y hora en mi secuencia de comandos de python en la línea de comandos. Mi primera idea fue usar optparse y pasar el valor como una cadena, luego usar datetime.strptime para convertirlo a una fecha y hora. Esto funciona bien en mi máquina (python 2.6), pero también necesito ejecutar esta secuencia de comandos en máquinas que ejecutan python 2.4, que no tiene datetime.strptime.argumento de línea de tiempo de fecha y hora en Python 2.4

¿Cómo puedo pasar el valor de fecha y hora al script en python 2.4?

Aquí está el código que estoy usando en 2.6:

parser = optparse.OptionParser() 
parser.add_option("-m", "--max_timestamp", dest="max_timestamp", 
        help="only aggregate items older than MAX_TIMESTAMP", 
        metavar="MAX_TIMESTAMP(YYYY-MM-DD HH24:MM)") 
options,args = parser.parse_args() 
if options.max_timestamp: 
    # Try parsing the date argument 
    try: 
     max_timestamp = datetime.datetime.strptime(options.max_timestamp, "%Y-%m-%d %H:%M") 
    except: 
     print "Error parsing date input:",sys.exc_info() 
     sys.exit(1) 

Respuesta

16

Ir a través del módulo de time, cosa que ya tienen en strptime 2.4:

>>> import time 
>>> t = time.strptime("2010-02-02 7:31", "%Y-%m-%d %H:%M") 
>>> t 
(2010, 2, 2, 7, 31, 0, 1, 33, -1) 
>>> import datetime 
>>> datetime.datetime(*t[:6]) 
datetime.datetime(2010, 2, 2, 7, 31) 
+0

Esto es perfecto. Había notado time.strptime pero soy nuevo en Python y no me di cuenta de lo fácil que es convertir el tiempo a una fecha y hora usando la notación de división. Gracias! –

+0

@Ike, de nada! –

+1

Mientras tanto, la biblioteca de Python se ha actualizado para que no necesite usar tiempo. Ahora, solo use: datetime.datetime.strptime() –

Cuestiones relacionadas