2010-10-28 26 views

Répondre

3

Vous pouvez utiliser dateutil pour que:

>>> from dateutil.parser import parse 
>>> dt = parse('19981024103115+0100') 
>>> dt 
datetime.datetime(1998, 10, 24, 10, 31, 15, tzinfo=tzoffset(None, 3600)) 
>>> dt.utctimetuple() 
time.struct_time(tm_year=1998, tm_mon=10, tm_mday=24, tm_hour=9, tm_min=31, tm_sec=15, tm_wday=5, tm_yday=297, tm_isdst=0) 
+0

+1, merci pour la meilleure réponse. 'time.strftime ("% Y-% m-% d% H:% M:% S ", t)' donne la sortie désirée. Il s'avère que l'analyse avec 'time.strptime()' ne fonctionne pas aussi bien avec% Z pour les fuseaux horaires comme "+0100". – bstpierre

+0

@bstpierre, je n'ai jamais compris pourquoi 'datetime' n'inclut pas un meilleur support pour les fuseaux horaires. Cela semble être une exigence essentielle. –

+0

@Mark Ransom - Je parlais de 'time', mais je suis d'accord avec votre commentaire. Traiter correctement les fuseaux horaires n'est pas facile. – bstpierre

0

Tant que vous savez que le décalage temporel sera toujours dans la forme à 4 chiffres, cela devrait fonctionner.

def MakeTime(date_string, offset_string): 
    offset_hours = int(offset_string[0:3]) 
    offset_minutes = int(offset_string[0] + offset_string[3:5]) 
    gmt_adjust = datetime.timedelta(hours = offset_hours, minutes = offset_minutes) 
    gmt_time = datetime.datetime.strptime(date_string, '%Y%m%d%H%M%S') - gmt_adjust 
    return gmt_time 
+0

Et si le décalage est négatif? – adw

+0

@adw, bon point, il y avait une erreur quand le décalage était négatif et les minutes étaient non nulles, par ex. '-0130'. Fixé. –

+0

Non, pas fixé. Par exemple, comparez offset = -100' avec 'offset = -101'. – adw