2011-07-12 15 views
5

¿Es posible convertir el tiempo recuperado del servidor NTP (con script python) en este formato "Wed Jul 13 00:17:58 CEST 2011" a este formato "2011-07-13 00:18:10"Convertir la fecha recuperada del servidor ntp con python

client = socket(AF_INET, SOCK_DGRAM) 
    data = '\x1b' + 47 * '\0' 
    client.sendto(data, (ntp.server.com,123)) 
    data, address = client.recvfrom(1024) 
    if data: 
     utc_secs = struct.unpack('!12I', data)[10] 
     utc_secs -= 2208988800L 
     utc_secs = time.ctime(utc_secs) 
     print utc_secs 
     return utc_secs 

me sale el siguiente formato: "Wed Jul 13 00:17:58 CEST 2011"

quiero convertir esto en este formato "2011-07-13 00: 17:58" ('% Y-% m-% d% H:% M:% S')

gracias :)

Respuesta

2

En su caso, puede ir directamente de la cantidad de segundos al formato de hora que desee; sin embargo, explicaré la solución general antes del fragmento exacto para su caso en la parte inferior.

En general, este tipo de problema se resuelve con la ayuda de strptime y strftime. También debe consultar el formatting codes en los documentos de python.

strptime() coincide con las piezas de una cadena de fecha y crea una estructura de hora de python. strftime() se puede usar para convertir esa estructura de tiempo en el formato que desee.

from datetime import datetime 
ntp_time = datetime.strptime(time_str_from_ntp, "%a %b %y %H:%M:%S") 
formatted_time = datetime.strftime(ntp_time, "%Y-%m-%d %H:%M:%S") 

O en su caso particular, puede reemplazar

utc_secs = time.ctime(utc_secs) 

con (NOTA: si no se ha hecho from datetime import datetime, entonces debería usar datetime.datetime.fromtimestamp abajo y no simplemente datetime.fromtimestamp)

formatted_time = datetime.fromtimestamp(utc_secs).strftime("%Y-%m-%d %H:%M:%S") 
1
>>> seC#your utc_secs 
1310511730 
>>> time.ctime(sec) #instead of this 
'Wed Jul 13 02:02:10 2011' 
>>> d = datetime.datetime.fromtimestamp(sec) #do this 
>>> d 
datetime.datetime(2011, 7, 13, 2, 2, 10) 
>>> d.strftime('%Y-%m-%d %H:%M:%S') 
'2011-07-13 02:02:10' 
Cuestiones relacionadas