2012-05-29 11 views
15

probablemente estoy perdiendo la diferencia plataforma obvio que debería ser servicial, pero me estoy poniendo este cuando se trata de hacer un formato de hora (Python2.7) ...tiempo Python formato diferente en Windows

en Linux env:

>>> import time 
>>> time.strftime("%a, %d-%b-%Y %T GMT", time.gmtime()) 
'Tue, 29-May-2012 21:42:04 GMT' 

en Windows:

>>> import time 
>>> time.strftime("%a, %d-%b-%Y %T GMT", time.gmtime()) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ValueError: Invalid format string 

las tuplas devueltas desde time.gmtime() parece ser el mismo, así que no estoy completamente seguro de lo que tengo que cambiar.

+0

solo para asegurarse de que está utilizando las mismas versiones exactas de Python en ambas plataformas? – Levon

Respuesta

13

En general, encontrará que python time.strftime() admite el mismo conjunto de especificadores de formato que la plataforma (o la libc de esa plataforma para ser más específica) en los que se ejecuta. Sin embargo, solo un subconjunto de estos es portátil. Consulte http://docs.python.org/library/time.html para obtener una lista. Para citar los documentos:

directivas podrán apoyarse en ciertas plataformas, pero sólo los que se muestran aquí tiene un significado estandarizado por ANSI C

En este caso, %T pueden ser reemplazados por %H:%M:%S.

+2

Aquí hay una lista de caracteres de formato compatibles con Windows strftime: http://msdn.microsoft.com/en-us/library/fe06s4ak.aspx – Joakim

0

no veo la directiva %T formato que aparece en la Python documentation - No debe estar disponible/implementado para la plataforma Windows (he intentado con tanto v2.7.3 Python 3.2.3 y ahora mismo)

0

encontré que tuve este problema porque MacOS admite "%D" y tuve que reemplazarlo por "%m/%d/%Y" para hacerlo multiplataforma. En general, combinar cadenas de formato 'simple' como %m parece ser más seguro que usar cadenas 'agregadas' como %T o %D.

Cuestiones relacionadas