Python - Datum en tijd
Een Python-programma kan op verschillende manieren met datum en tijd omgaan. Het converteren tussen datumnotaties is een veelvoorkomend karwei voor computers. De tijd- en kalendermodules van Python helpen bij het bijhouden van datums en tijden.
Wat is een vinkje?
Tijdsintervallen zijn getallen met drijvende komma in eenheden van seconden. Bepaalde tijdstippen in de tijd worden uitgedrukt in seconden sinds 00:00:00 uur 1 januari 1970 (tijdperk).
Er is een populaire tijd module beschikbaar in Python die functies biedt voor het werken met tijden en voor het converteren tussen representaties. De functie time.time() geeft de huidige systeemtijd in ticks terug sinds 00:00:00 uur 1 januari 1970(epoch).
Voorbeeld
Live demo#!/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
Dit zou een resultaat opleveren als volgt −
Number of ticks since 12:00am, January 1, 1970: 7186862.73399
Datumberekening is gemakkelijk te doen met teken. Datums vóór het tijdperk kunnen echter niet in deze vorm worden weergegeven. Datums in de verre toekomst kunnen ook niet op deze manier worden weergegeven - het afkappunt is ergens in 2038 voor UNIX en Windows.
Wat is TimeTuple?
Veel van de tijdfuncties van Python verwerken tijd als een tupel van 9 getallen, zoals hieronder getoond −
Index | Veld | Waarden |
---|---|---|
0 | 4-cijferig jaar | 2008 |
1 | Maand | 1 tot 12 |
2 | Dag | 1 tot 31 |
3 | Uur | 0 tot 23 |
4 | Minuut | 0 tot 59 |
5 | Tweede | 0 tot 61 (60 of 61 zijn schrikkelseconden) |
6 | Dag van de week | 0 tot 6 (0 is maandag) |
7 | Dag van het jaar | 1 tot 366 (Juliaanse dag) |
8 | Zomerbesparing | -1, 0, 1, -1 betekent dat bibliotheek DST bepaalt |
De bovenstaande tuple is gelijk aan struct_time structuur. Deze structuur heeft de volgende kenmerken −
Index | Kenmerken | Waarden |
---|---|---|
0 | tm_year | 2008 |
1 | tm_mon | 1 tot 12 |
2 | tm_mday | 1 tot 31 |
3 | tm_hour | 0 tot 23 |
4 | tm_min | 0 tot 59 |
5 | tm_sec | 0 tot 61 (60 of 61 zijn schrikkelseconden) |
6 | tm_wday | 0 tot 6 (0 is maandag) |
7 | tm_yday | 1 tot 366 (Juliaanse dag) |
8 | tm_isdst | -1, 0, 1, -1 betekent dat bibliotheek DST bepaalt |
Huidige tijd ophalen
Een tijd onmiddellijk vertalen van seconden sinds het tijdperk drijvende-kommawaarde in een tijd-tupel, geef de drijvende-kommawaarde door aan een functie (bijv. lokale tijd) die een tijd-tupel retourneert met alle negen items geldig.
Live demo#!/usr/bin/python import time; localtime = time.localtime(time.time()) print "Local current time :", localtime
Dit zou het volgende resultaat opleveren, dat in een andere presenteerbare vorm kan worden opgemaakt −
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)
Geformatteerde tijd ophalen
U kunt op elk gewenst moment formatteren volgens uw vereisten, maar een eenvoudige methode om tijd in een leesbaar formaat te krijgen is asctime() −
Live demo#!/usr/bin/python import time; localtime = time.asctime( time.localtime(time.time()) ) print "Local current time :", localtime
Dit zou het volgende resultaat opleveren −
Local current time : Tue Jan 13 10:17:09 2009
Een maandkalender krijgen
De kalendermodule biedt een breed scala aan methoden om met jaar- en maandkalenders te spelen. Hier drukken we een kalender af voor een bepaalde maand ( Jan 2008 ) −
Live demo#!/usr/bin/python import calendar cal = calendar.month(2008, 1) print "Here is the calendar:" print cal
Dit zou het volgende resultaat opleveren −
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
De tijd Module
Er is een populaire tijd module beschikbaar in Python die functies biedt voor het werken met tijden en voor het converteren tussen representaties. Hier is de lijst met alle beschikbare methoden −
Sr.nr. | Functie met beschrijving |
---|---|
1 | tijd.altzone De offset van de lokale DST-tijdzone, in seconden ten westen van UTC, als er een is gedefinieerd. Dit is negatief als de lokale DST-tijdzone ten oosten van UTC ligt (zoals in West-Europa, inclusief het VK). Gebruik dit alleen als het daglicht niet nul is. |
2 | time.asctime([tupletime]) Accepteert een tijd-tupel en retourneert een leesbare reeks van 24 tekens, zoals 'Tue Dec 11 18:07:14 2008'. |
3 | tijd.klok( ) Retourneert de huidige CPU-tijd als een drijvende-kommagetal seconden. Om de rekenkosten van verschillende benaderingen te meten, is de waarde van time.clock nuttiger dan die van time.time(). |
4 | time.ctime([sec]) Zoals asctime(localtime(secs)) en zonder argumenten is als asctime() |
5 | time.gmtime([sec]) Accepteert een moment uitgedrukt in seconden sinds het tijdperk en retourneert een tijd-tuple t met de UTC-tijd. Opmerking:t.tm_isdst is altijd 0 |
6 | time.localtime([sec]) Accepteert een moment uitgedrukt in seconden sinds het tijdperk en retourneert een tijd-tuple t met de lokale tijd (t.tm_isdst is 0 of 1, afhankelijk van of DST van toepassing is op instant seconden volgens lokale regels). |
7 | time.mktime(tupletime) Accepteert een moment uitgedrukt als een tijd-tupel in lokale tijd en retourneert een drijvende-kommawaarde met het moment uitgedrukt in seconden sinds het tijdperk. |
8 | tijd.slaap(sec) Onderbreekt de oproepende thread voor seconden. |
9 | time.strftime(fmt[,tupletime]) Accepteert een moment uitgedrukt als een tijd-tupel in lokale tijd en retourneert een string die het moment vertegenwoordigt zoals gespecificeerd door string fmt. |
10 | time.strptime(str,fmt='%a %b %d %H:%M:%S %Y') Parseert str volgens format string fmt en retourneert het moment in time-tuple formaat. |
11 | tijd.tijd( ) Retourneert het huidige tijdstip, een drijvende-kommagetal seconden sinds het tijdperk. |
12 | tijd.tzset() Stelt de tijdconversieregels die worden gebruikt door de bibliotheekroutines opnieuw in. De omgevingsvariabele TZ geeft aan hoe dit wordt gedaan. |
Laten we de functies kort doornemen −
Er zijn de volgende twee belangrijke attributen beschikbaar met de tijdmodule −
Sr.nr. | Kenmerk met beschrijving |
---|---|
1 | time.timezone Attribuut time.timezone is de afwijking in seconden van de lokale tijdzone (zonder DST) vanaf UTC (>0 in Amerika; <=0 in het grootste deel van Europa, Azië, Afrika). |
2 | time.tzname Attribuut time.tzname is een paar locale-afhankelijke strings, dit zijn de namen van de lokale tijdzone zonder respectievelijk met DST. |
De kalender Module
De kalendermodule levert kalendergerelateerde functies, waaronder functies om een tekstkalender voor een bepaalde maand of jaar af te drukken.
Standaard neemt de kalender maandag als eerste dag van de week en zondag als laatste. Om dit te wijzigen, roept u de functie calendar.setfirstweekday() aan.
Hier is een lijst met functies die beschikbaar zijn met de kalender module −
Sr.nr. | Functie met beschrijving |
---|---|
1 | calendar.calendar(jaar,w=2,l=1,c=6) Retourneert een tekenreeks met meerdere regels met een kalender voor het jaar jaar, opgemaakt in drie kolommen, gescheiden door c-spaties. w is de breedte in tekens van elke datum; elke regel heeft lengte 21*w+18+2*c. l is het aantal regels voor elke week. |
2 | calendar.firstweekday( ) Retourneert de huidige instelling voor de weekdag die elke week begint. Wanneer de kalender voor het eerst wordt geïmporteerd, is dit standaard 0, wat maandag betekent. |
3 | calendar.isleap(jaar) Retourneert True als jaar een schrikkeljaar is; anders niet waar. |
4 | calendar.leapdays(y1,y2) Retourneert het totale aantal schrikkeldagen in de jaren binnen bereik (y1,y2). |
5 | kalender.maand(jaar,maand,w=2,l=1) Retourneert een tekenreeks met meerdere regels met een kalender voor maand maand van jaar jaar, één regel per week plus twee kopregels. w is de breedte in tekens van elke datum; elke regel heeft lengte 7*w+6. l is het aantal regels voor elke week. |
6 | calendar.monthcalendar(jaar,maand) Retourneert een lijst met lijsten met ints. Elke sublijst geeft een week aan. Dagen buiten maand maand van jaar jaar worden op 0 gezet; dagen binnen de maand worden ingesteld op hun dag van de maand, 1 en hoger. |
7 | kalender.maandbereik(jaar,maand) Retourneert twee gehele getallen. De eerste is de code van de weekdag voor de eerste dag van de maand maand in jaar jaar; de tweede is het aantal dagen in de maand. Weekdagcodes zijn 0 (maandag) tot 6 (zondag); maandnummers zijn 1 tot 12. |
8 | kalender.prcal(jaar,w=2,l=1,c=6) Zoals print calendar.calendar(year,w,l,c). |
9 | kalender.prmaand(jaar,maand,w=2,l=1) Zoals kalender.maand(jaar,maand,w,l) afdrukken. |
10 | calendar.setfirstweekday(weekdag) Stelt de eerste dag van elke week in op weekdagcode weekdag. Weekdagcodes zijn 0 (maandag) tot 6 (zondag). |
11 | calendar.timegm(tupletime) De inverse van time.gmtime:accepteert een tijdsmoment in tijd-tupelvorm en retourneert hetzelfde moment als een drijvende-kommagetal seconden sinds het tijdperk. |
12 | calendar.weekday(jaar,maand,dag) Retourneert de weekdagcode voor de opgegeven datum. Weekdagcodes zijn 0 (maandag) tot 6 (zondag); maandnummers zijn 1 (januari) tot 12 (december). |
Andere modules en functies
Als je geïnteresseerd bent, vind je hier een lijst met andere belangrijke modules en functies om te spelen met datum en tijd in Python −
-
De datetime Module
-
De pytz Module
-
De dateutil Module
Python