Python - Date et heure

Un programme Python peut gérer la date et l'heure de plusieurs manières. La conversion entre les formats de date est une tâche courante pour les ordinateurs. Les modules d'heure et de calendrier de Python aident à suivre les dates et les heures.

Qu'est-ce que Tick?

Les intervalles de temps sont des nombres à virgule flottante en unités de secondes. Des instants particuliers dans le temps sont exprimés en secondes depuis le 1er janvier 1970 à 00:00:00 (époque).

Il y a un populaire timemodule disponible en Python qui fournit des fonctions pour travailler avec les temps et pour convertir entre les représentations. La fonction time.time () renvoie l'heure système actuelle en ticks depuis le 1er janvier 1970 (époque) à 00:00:00.

Exemple

#!/usr/bin/python
import time;  # This is required to include time module.

ticks = time.time()
print "Number of ticks since 12:00am, January 1, 1970:", ticks

Cela produirait un résultat comme suit -

Number of ticks since 12:00am, January 1, 1970: 7186862.73399

L'arithmétique des dates est facile à faire avec les graduations. Cependant, les dates antérieures à l'époque ne peuvent pas être représentées sous cette forme. Les dates dans un futur lointain ne peuvent pas non plus être représentées de cette façon - le point de coupure est quelque part en 2038 pour UNIX et Windows.

Qu'est-ce que TimeTuple?

De nombreuses fonctions de temps de Python traitent le temps comme un tuple de 9 nombres, comme indiqué ci-dessous -

Indice Champ Valeurs
0 Année à 4 chiffres 2008
1 Mois 1 à 12
2 journée 1 à 31
3 Heure 0 à 23
4 Minute 0 à 59
5 Seconde 0 à 61 (60 ou 61 sont des secondes bissextiles)
6 Jour de la semaine 0 à 6 (0 est lundi)
sept Jour de l'année 1 à 366 (jour julien)
8 L'heure d'été -1, 0, 1, -1 signifie que la bibliothèque détermine l'heure d'été

Le tuple ci-dessus est équivalent à struct_timestructure. Cette structure a les attributs suivants -

Indice Les attributs Valeurs
0 tm_year 2008
1 tm_mon 1 à 12
2 tm_mday 1 à 31
3 tm_hour 0 à 23
4 tm_min 0 à 59
5 tm_sec 0 à 61 (60 ou 61 sont des secondes bissextiles)
6 tm_wday 0 à 6 (0 est lundi)
sept tm_yday 1 à 366 (jour julien)
8 tm_isdst -1, 0, 1, -1 signifie que la bibliothèque détermine l'heure d'été

Obtenir l'heure actuelle

Pour traduire un instant de temps à partir d'une seconde depuis la valeur à virgule flottante de l'époque en un tuple de temps, passez la valeur à virgule flottante à une fonction (par exemple, heure locale) qui renvoie un tuple de temps avec les neuf éléments valides.

#!/usr/bin/python
import time;

localtime = time.localtime(time.time())
print "Local current time :", localtime

Cela produirait le résultat suivant, qui pourrait être formaté sous toute autre forme présentable -

Local current time : time.struct_time(tm_year=2013, tm_mon=7, 
tm_mday=17, tm_hour=21, tm_min=26, tm_sec=3, tm_wday=2, tm_yday=198, tm_isdst=0)

Obtenir l'heure formatée

Vous pouvez formater à tout moment selon vos besoins, mais une méthode simple pour obtenir l'heure dans un format lisible est asctime () -

#!/usr/bin/python
import time;

localtime = time.asctime( time.localtime(time.time()) )
print "Local current time :", localtime

Cela produirait le résultat suivant -

Local current time : Tue Jan 13 10:17:09 2009

Obtenir un calendrier pour un mois

Le module de calendrier propose un large éventail de méthodes pour jouer avec les calendriers annuels et mensuels. Ici, nous imprimons un calendrier pour un mois donné (janvier 2008) -

#!/usr/bin/python
import calendar

cal = calendar.month(2008, 1)
print "Here is the calendar:"
print cal

Cela produirait le résultat suivant -

Here is the calendar:
   January 2008
Mo Tu We Th Fr Sa Su
    1  2  3  4  5  6
 7  8  9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

Le module de temps

Il y a un populaire timemodule disponible en Python qui fournit des fonctions pour travailler avec les temps et pour convertir entre les représentations. Voici la liste de toutes les méthodes disponibles -

N ° Sr. Fonction avec description
1 time.altzone

Décalage du fuseau horaire local de l'heure d'été, en secondes à l'ouest de UTC, le cas échéant. Ceci est négatif si le fuseau horaire local de l'heure d'été est à l'est de UTC (comme en Europe occidentale, y compris au Royaume-Uni). N'utilisez ceci que si la lumière du jour est différente de zéro.

2 time.asctime ([tupletime])

Accepte un temps-tuple et renvoie une chaîne de 24 caractères lisible telle que «Tue Dec 11 18:07:14 2008».

3 heure.horloge ()

Renvoie le temps processeur actuel sous forme de nombre de secondes à virgule flottante. Pour mesurer les coûts de calcul de différentes approches, la valeur de time.clock est plus utile que celle de time.time ().

4 time.ctime ([secs])

Comme asctime (localtime (secs)) et sans arguments est comme asctime ()

5 time.gmtime ([secs])

Accepte un instant exprimé en secondes depuis l'époque et renvoie un temps-tuple t avec l'heure UTC. Remarque: t.tm_isdst vaut toujours 0

6 time.localtime ([secs])

Accepte un instant exprimé en secondes depuis l'époque et renvoie un tuple de temps t avec l'heure locale (t.tm_isdst vaut 0 ou 1, selon que l'heure d'été s'applique aux secondes instantanées par les règles locales).

sept time.mktime (tupletime)

Accepte un instant exprimé comme un temps-tuple en heure locale et renvoie une valeur à virgule flottante avec l'instant exprimé en secondes depuis l'époque.

8 time.sleep (secondes)

Suspend le thread appelant pendant secondes secondes.

9 time.strftime (fmt [, tupletime])

Accepte un instant exprimé sous forme de temps-tuple en heure locale et renvoie une chaîne représentant l'instant tel que spécifié par la chaîne fmt.

dix time.strptime (str, fmt = '% a% b% d% H:% M:% S% Y')

Analyse str en fonction de la chaîne de format fmt et renvoie l'instant au format time-tuple.

11 temps temps( )

Renvoie l'instant actuel, un nombre à virgule flottante de secondes depuis l'époque.

12 time.tzset ()

Réinitialise les règles de conversion de temps utilisées par les routines de la bibliothèque. La variable d'environnement TZ spécifie comment cela est fait.

Passons brièvement en revue les fonctions -

Deux attributs importants sont disponibles avec le module de temps:

N ° Sr. Attribut avec description
1

time.timezone

L'attribut time.timezone est le décalage en secondes du fuseau horaire local (sans heure d'été) par rapport à UTC (> 0 dans les Amériques; <= 0 dans la plupart des pays d'Europe, d'Asie et d'Afrique).

2

time.tzname

L'attribut time.tzname est une paire de chaînes dépendant des paramètres régionaux, qui sont respectivement les noms du fuseau horaire local sans et avec l'heure d'été.

Le module calendrier

Le module de calendrier fournit des fonctions liées au calendrier, y compris des fonctions permettant d'imprimer un calendrier textuel pour un mois ou une année donné.

Par défaut, le calendrier prend le lundi comme premier jour de la semaine et le dimanche comme dernier. Pour changer cela, appelez la fonction calendar.setfirstweekday ().

Voici une liste des fonctions disponibles avec le module calendrier -

N ° Sr. Fonction avec description
1

calendar.calendar(year,w=2,l=1,c=6)

Renvoie une chaîne multiligne avec un calendrier pour l'année année formaté en trois colonnes séparées par des espaces C. w est la largeur en caractères de chaque date; chaque ligne a la longueur 21 * w + 18 + 2 * c. l est le nombre de lignes pour chaque semaine.

2

calendar.firstweekday( )

Renvoie le paramètre actuel pour le jour de la semaine qui commence chaque semaine. Par défaut, lorsque le calendrier est importé pour la première fois, il s'agit de 0, ce qui signifie lundi.

3

calendar.isleap(year)

Renvoie True si l'année est une année bissextile; sinon, Faux.

4

calendar.leapdays(y1,y2)

Renvoie le nombre total de jours bissextiles dans les années comprises dans la plage (y1, y2).

5

calendar.month(year,month,w=2,l=1)

Renvoie une chaîne multiligne avec un calendrier pour le mois mois de l'année année, une ligne par semaine plus deux lignes d'en-tête. w est la largeur en caractères de chaque date; chaque ligne a une longueur 7 * w + 6. l est le nombre de lignes pour chaque semaine.

6

calendar.monthcalendar(year,month)

Renvoie une liste de listes d'entiers. Chaque sous-liste correspond à une semaine. Les jours hors mois mois de l'année année sont définis sur 0; les jours du mois sont définis sur leur jour du mois, 1 et plus.

sept

calendar.monthrange(year,month)

Renvoie deux entiers. Le premier est le code du jour de la semaine pour le premier jour du mois mois de l'année année; le second est le nombre de jours dans le mois. Les codes de jour de la semaine vont de 0 (lundi) à 6 (dimanche); les numéros de mois vont de 1 à 12.

8

calendar.prcal(year,w=2,l=1,c=6)

Comme print calendar.calendar (année, w, l, c).

9

calendar.prmonth(year,month,w=2,l=1)

Comme print calendar.month (année, mois, w, l).

dix

calendar.setfirstweekday(weekday)

Définit le premier jour de chaque semaine sur le code du jour de la semaine. Les codes de jour de la semaine vont de 0 (lundi) à 6 (dimanche).

11

calendar.timegm(tupletime)

L'inverse de time.gmtime: accepte un instant de temps sous forme de temps-tuple et renvoie le même instant qu'un nombre de secondes à virgule flottante depuis l'époque.

12

calendar.weekday(year,month,day)

Renvoie le code du jour de la semaine pour la date donnée. Les codes de jour de la semaine vont de 0 (lundi) à 6 (dimanche); les numéros de mois vont du 1 (janvier) au 12 (décembre).

Autres modules et fonctions

Si vous êtes intéressé, vous trouverez ici une liste d'autres modules et fonctions importants pour jouer avec la date et l'heure en Python -

  • Le module datetime

  • Le module pytz

  • Le module dateutil