2012-05-29 15 views
15

sono probabilmente manca una differenza piattaforma ovvio che dovrei essere accomodante ma sto ottenendo questo quando si cerca di fare un formato ora (Python2.7) ...tempo Python formattazione diverso in Windows

in Linux ENV:

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

in 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 

le tuple restituite da time.gmtime() sembra essere lo stesso, quindi non sono del tutto sicuro di quello che ho bisogno di cambiare.

+0

solo per essere sicuri, si stanno utilizzando le stesse identiche versioni di Python su entrambe le piattaforme? – Levon

risposta

13

In generale, scoprirete che python time.strftime() supporta lo stesso insieme di specificatori di formato della piattaforma (o della libc di quella piattaforma per essere più specifici) su cui gira. Tuttavia, solo un sottoinsieme di questi è portatile. Vedere http://docs.python.org/library/time.html per un elenco. Per citare la documentazione:

direttive supplementari possono essere supportati su alcune piattaforme, ma solo quelli elencati qui hanno un significato standardizzato da ANSI C.

In questo caso, %T può essere sostituito da %H:%M:%S.

+2

Ecco un elenco di caratteri di formato supportati dallo strftime di Windows: http://msdn.microsoft.com/en-us/library/fe06s4ak.aspx – Joakim

0

non vedo la direttiva formato %T elencati nel Python documentation - non deve essere disponibile/implementata per la piattaforma Windows (ho provato sia con Python v2.7.3 e 3.2.3 solo ora)

0

ho trovato che ho avuto questo problema perché MacOS supporta "%D" e ho dovuto sostituirlo con "%m/%d/%Y" per renderlo multipiattaforma. In generale, combinare stringhe di formato "semplici" come %m sembra essere più sicuro rispetto all'utilizzo di stringhe "aggregate" come %T o %D.