# Date



On importe le module `datetime`.

```python
from datetime import datetime
```

Obtenir l'heure courante:

```python
>>> maintenant = datetime.now()
>>> maintenant
datetime.datetime(2019, 3, 2, 6, 57, 24, 532139)

# datetime(année, mois, jour, heure, minute, seconde, microseconde, fuseau horaire)

>>> maintenant.year
2019
>>> maintenant.month
3
>>> maintenant.day
2
>>> maintenant.hour
6
>>> maintenant.minute
57
>>> maintenant.second
24
>>> maintenant.microsecond
532139
>>> maintenant.isocalendar
<built-in method isocalendar of datetime.datetime object at 0x104900b70>

>>> maintenant.date()
datetime.date(2019, 3, 2)
>>> maintenant.time()
datetime.time(6, 57, 24, 532139)
```

Créer une date:

```python
# année, mois, jour sont obligatoires
>>> a = datetime(2001, 1, 1)
>>> a.year
2001
```

Durée:

```python
>>> duree = datetime.now() - datetime(2001, 1, 1)
>>> duree
datetime.timedelta(days=6634, seconds=26875, microseconds=353545)

>>> duree.days
6634
>>> duree.total_seconds()
573204475.353545

```

Format d'affichage:

```python
>>> maintenant = datetime.now()
>>> maintenant
datetime.datetime(2019, 3, 2, 7, 50, 30, 756453)

>>> maintenant_US = datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
>>> maintenant_US
'2019-03-02 07:49:12.627321'

>>> maintenant_FR = datetime.now().strftime('%d-%m-%Y %H:%M:%S')
>>> maintenant_FR
'02-03-2019 07:53:05'
```

[Liste des formats](https://docs.python.org/fr/3/library/datetime.html#strftime-and-strptime-behavior)

### Calendrier:

```python
>>> import calendar
```

```python
>>> calendar.mdays	# nb de. jours dans le mois
[0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
>>> calendar.isleap(2020)	# année bisextile ?
True
>>> calendar.weekday(1966, 8, 31)	# jour précis d'une date (2 => mercredi)
2
```



### Timestamp:

Récupérer le timestamp courant:

```python
>>> from datetime import datetime
>>> import calendar
>>> d = datetime.now()
>>> ts = calendar.timegm(d.utctimetuple())
>>> ts
1551516334
```

```python
>>> import time
>>> ts = time.time()
>>> ts
1551511030.9611452
```

```python
>>> import datetime
>>> ts = datetime.datetime.now().timestamp()
>>> ts
1551511138.821511

# equivalent
>>> from datetime import datetime
>>> ts = datetime.now().timestamp()
>>> ts
1551511979.337509
```

```python
import calendar, time
>>> ts = calendar.timegm(time.gmtime())
>>> ts
1551511394
```

Récupérer une date depuis un timestamp:

```python
# heure utc
>>> d = datetime.utcfromtimestamp(ts)
>>> d
datetime.datetime(2019, 3, 2, 8, 53, 3)
```

```python
# heure LOCALE
>>> e = datetime.fromtimestamp(ts)
>>> e
datetime.datetime(2019, 3, 2, 9, 53, 3)
```

