2010-03-21 48 views
19

Necesito generar una marca de tiempo local en forma de AAAAMMDDHHmmSSOHH'mm '. Ese OHH'mm 'es uno de +, -, Z y luego hay horas y minutos seguidos por'.Python: formato de fecha, hora

Por favor, ¿cómo consigo una marca de tiempo que indique la zona horaria local y el posible horario de verano?

+0

¿Dónde se mira para el formato de tiempo? ¿Qué intentaste? ¿Qué errores obtuviste? –

+0

He leído documentos de std lib, y están confundiendo qué zonas horarias van ... – TarGz

+0

"confuso"? Podría significar cualquier cosa. Para ayudar a otros con el mismo problema, ¿podría proporcionar la cita o el enlace que lo confundió? –

Respuesta

28
import time 

localtime = time.localtime() 
timeString = time.strftime("%Y%m%d%H%M%S", localtime) 

# is DST in effect? 
timezone = -(time.altzone if localtime.tm_isdst else time.timezone) 
timeString += "Z" if timezone == 0 else "+" if timezone > 0 else "-" 
timeString += time.strftime("%H'%M'", time.gmtime(abs(timezone))) 
+0

Esto me acaba de "20100321142049-01'00 '" :) – badp

+0

¡Exactamente lo que quería! – TarGz

+0

¡Oh, no! Hay un error. Digamos que alguien vive en Italia, la zona horaria es + 01'00 ', no -01'00' ... – TarGz

8

time.strftime va a hacer por que,

Y en Linux, %z sólo le dará -HHMM formato si la variable de entorno se establece correctamente.

>>> os.environ['TZ'] = 'EST' 
>>> time.strftime('%x %X %z') 
'03/21/10 08:16:33 -0500' 
+0

¿Cómo? No hay forma de obtener el desplazamiento de la zona horaria, y% Z obtiene solo el nombre de la zona horaria ..? – TarGz

+0

@TarGz - time.timezone tiene desplazamiento de la zona de tiempo local en segundos, es posible que desee combinar dos para que funcione – YOU

+0

Parece,% z es dependiente de pltaform – TarGz

Cuestiones relacionadas