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