human
J'ai une chaîne de caractères représentant un horodatage Unix (c'est-à-dire "1284101485") en Python, et je souhaite le convertir en une date lisible. Lorsque j'utilise ```time.strftime```, j'obtiens une ```TypeError```:
```>>>import time
>>>print time.strftime(&quot;%B %d %Y&quot;, &quot;1284101485&quot;)
Traceback (most recent call last):
  File &quot;&quot;, line 1, in 
TypeError: argument must be 9-item sequence, not str
``
gpt
Il y a deux parties ici :

* Convertir l'horodatage Unix ("secondes depuis l'époque") en heure locale
* Afficher l'heure locale dans le format souhaité.

Une façon portable d'obtenir l'heure locale qui fonctionne même si le fuseau horaire local avait un décalage UTC différent dans le passé et que Python n'a pas accès à la base de données des fuseaux horaires consiste à utiliser un fuseau horaire ```pytz```:
```#!/usr/bin/env python
from datetime import datetime
import tzlocal  # $ pip install tzlocal
unix_timestamp = float("1284101485")
local_timezone = tzlocal.get_localzone() # obtenir le fuseau horaire pytz
local_time = datetime.fromtimestamp(unix_timestamp, local_timezone)
```
Pour l'afficher, vous pouvez utiliser n'importe quel format d'heure pris en charge par votre système, par exemple :
```print(local_time.strftime("%Y-%m-%d %H:%M:%S.%f%z (%Z)"))
print(local_time.strftime("%B %d %Y"))  # afficher la date dans votre format
```

Si vous n'avez pas besoin d'une heure locale, pour obtenir une heure UTC lisible à la place :
```utc_time = datetime.utcfromtimestamp(unix_timestamp)
print(utc_time.strftime("%Y-%m-%d %H:%M:%S.%f+00:00 (UTC)"))
```

Si vous ne vous souciez pas des problèmes de fuseau horaire qui pourraient affecter la date renvoyée ou si Python a accès à la base de données des fuseaux horaires sur votre système :
```local_time = datetime.fromtimestamp(unix_timestamp)
print(local_time.strftime("%Y-%m-%d %H:%M:%S.%f"))
```
Sur Python 3, vous pouvez obtenir un objet datetime avec un fuseau horaire en utilisant uniquement la bibliothèque standard (le décalage UTC peut être incorrect si Python n'a pas accès à la base de données des fuseaux horaires sur votre système, par exemple sur Windows) :
```#!/usr/bin/env python3
from datetime import datetime, timezone
utc_time = datetime.fromtimestamp(unix_timestamp, timezone.utc)
local_time = utc_time.astimezone()
print(local_time.strftime("%Y-%m-%d %H:%M:%S.%f%z (%Z)"))
```
Les fonctions du module ```time``` sont de simples enveloppes autour de l'API C correspondante et peuvent donc être moins portables que les méthodes correspondantes de ```datetime```, sinon vous pourriez également les utiliser :
```#!/usr/bin/env python
import time
unix_timestamp  = int("1284101485")
utc_time = time.gmtime(unix_timestamp)
local_time = time.localtime(unix_timestamp)
print(time.strftime("%Y-%m-%d %H:%M:%S", local_time))
print(time.strftime("%Y-%m-%d %H:%M:%S+00:00 (UTC)", utc_time))
```