Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> Python

Datums & Tijden in Python Beheersen: Een Praktische Gids

Wat is een Tick?

Tijdintervallen zijn floating-point getallen in seconden. Specifieke momenten in de tijd worden uitgedrukt in seconden sinds 00:00:00 uur, 1 januari 1970 (epoch).

Er is een populaire time module beschikbaar in Python die functies biedt voor het werken met tijden en het converteren tussen representaties. De functie time.time() retourneert de huidige systeemtijd in ticks sinds 00:00:00 uur, 1 januari 1970 (epoch).

Voorbeeld

#!/usr/bin/python
import time
# Dit is vereist om de time-module te importeren
ticks = time.time()
print "Aantal ticks sinds 12:00am, 1 januari 1970:", ticks

Dit zou een resultaat produceren zoals:

Aantal ticks sinds 12:00am, 1 januari 1970: 7186862.73399

Datumrekenen is eenvoudig met ticks. Echter, datums vóór de epoch kunnen niet op deze manier worden voorgesteld. Datums in de verre toekomst kunnen ook niet op deze manier worden voorgesteld – het afsnijpunt is ergens in 2038 voor UNIX en Windows.

Wat is een TimeTuple?

Veel van Python's time-functies hanteren tijd als een tuple van 9 getallen, zoals hieronder getoond:

Index Veld Waarden
04-cijferig jaar2008
1Maand1 tot 12
2Dag1 tot 31
3Uur0 tot 23
4Minuut0 tot 59
5Seconde0 tot 61 (60 of 61 zijn leap-seconds)
6Dag van de week0 tot 6 (0 is maandag)
7Dag van het jaar1 tot 366 (Julianse dag)
8Zomertijd-1, 0, 1, -1 betekent bibliotheek bepaalt DST

De bovenstaande tuple is equivalent aan de struct_time structuur. Deze structuur heeft de volgende attributen:

Index Attributen Waarden
0tm_year2008
1tm_mon1 tot 12
2tm_mday1 tot 31
3tm_hour0 tot 23
4tm_min0 tot 59
5tm_sec0 tot 61 (60 of 61 zijn leap-seconds)
6tm_wday0 tot 6 (0 is maandag)
7tm_yday1 tot 366 (Julianse dag)
8tm_isdst-1, 0, 1, -1 betekent bibliotheek bepaalt DST

Huidige Tijd Ophalen

Om een tijdstip van een seconden sinds de epoch floating-point waarde om te zetten in een time-tuple, geef je de floating-point waarde door aan een functie (bijv. localtime) die een time-tuple retourneert met alle negen items geldig.

#!/usr/bin/python
import time
localtime = time.localtime(time.time())
print "Lokale huidige tijd:", localtime

Dit produceert het volgende resultaat, dat in elke andere presenteerbare vorm geformatteerd kan worden:

Lokale huidige tijd: 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

Je kunt elke tijd formatteren naar wens, maar een eenvoudige methode om tijd in leesbaar formaat te krijgen is asctime():

#!/usr/bin/python
import time
localtime = time.asctime(time.localtime(time.time()))
print "Lokale huidige tijd:", localtime

Dit produceert het volgende resultaat:

Lokale huidige tijd: Tue Jan 13 10:17:09 2009

Kalender voor een Maand Ophalen

De calendar-module biedt een breed scala aan methodes om met jaar- en maandkalenders te werken. Hier printen we een kalender voor een gegeven maand (jan 2008):

#!/usr/bin/python
import calendar
cal = calendar.month(2008, 1)
print "Hier is de kalender:"
print cal

Dit produceert het volgende resultaat:

Hier is de kalender:
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 time Module

Er is een populaire time module beschikbaar in Python die functies biedt voor het werken met tijden en het converteren tussen representaties. Hier is de lijst met alle beschikbare methodes:

Nr. Functie met Beschrijving
1time.altzone

De offset van de lokale DST-tijdzone, in seconden west van UTC, als gedefinieerd. Negatief als de lokale DST-tijdzone oostelijk van UTC ligt (zoals in West-Europa, inclusief UK). Alleen gebruiken als daylight non-zero is.

2time.asctime([tupletime])

Accepteert een time-tuple en retourneert een leesbare 24-karakter string zoals 'Tue Dec 11 18:07:14 2008'.

3time.clock()

Retourneert de huidige CPU-tijd als floating-point aantal seconden. Om computationele kosten van verschillende benaderingen te meten, is time.clock nuttiger dan time.time().

4time.ctime([secs])

Als asctime(localtime(secs)) en zonder argumenten als asctime().

5time.gmtime([secs])

Accepteert een instant uitgedrukt in seconden sinds de epoch en retourneert een time-tuple t met UTC-tijd. Let op: t.tm_isdst is altijd 0.

6time.localtime([secs])

Accepteert een instant in seconden sinds de epoch en retourneert een time-tuple t met lokale tijd (t.tm_isdst is 0 of 1, afhankelijk of DST van toepassing is op instant secs per lokale regels).

7time.mktime(tupletime)

Accepteert een instant uitgedrukt als time-tuple in lokale tijd en retourneert een floating-point waarde met het instant in seconden sinds de epoch.

8time.sleep(secs)

Schort de aanroepende thread voor secs seconden.

9time.strftime(fmt[,tupletime])

Accepteert een instant als time-tuple in lokale tijd en retourneert een string die het instant vertegenwoordigt zoals gespecificeerd door string fmt.

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

Parst str volgens formaatstring fmt en retourneert het instant in time-tuple formaat.

11time.time()

Retourneert het huidige tijdstip, een floating-point aantal seconden sinds de epoch.

12time.tzset()

Reset de tijdconversieregels gebruikt door de bibliotheekroutines. De omgevingsvariabele TZ specificeert hoe dit gedaan wordt.

Er zijn twee belangrijke attributen beschikbaar met de time-module:

Nr. Attribuut met Beschrijving
1

time.timezone

Attribuut time.timezone is de offset in seconden van de lokale tijdzone (zonder DST) vanaf UTC (>0 in Amerika's; <=0 in meeste van Europa, Azië, Afrika).

2

time.tzname

Attribuut time.tzname is een paar locale-afhankelijke strings, de namen van de lokale tijdzone zonder en met DST, respectievelijk.

De calendar Module

De calendar-module levert kalender-gerelateerde functies, inclusief functies om een tekstkalender voor een gegeven maand of jaar af te drukken.

Standaard neemt calendar maandag als eerste dag van de week en zondag als laatste. Om dit te wijzigen, roep je calendar.setfirstweekday() aan.

Hier is een lijst met functies beschikbaar in de calendar module:

Nr. Functie met Beschrijving
1

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

Retourneert een multiline-string met een kalender voor jaar year geformatteerd in drie kolommen gescheiden door c spaties. w is de breedte in karakters per datum; elke regel heeft lengte 21*w+18+2*c. l is het aantal regels per week.

2

calendar.firstweekday()

Retourneert de huidige instelling voor de weekdag die elke week start. Standaard, wanneer calendar geïmporteerd wordt, is dit 0, betekent maandag.

3

calendar.isleap(year)

Retourneert True als year een schrikkeljaar is; anders False.

4

calendar.leapdays(y1, y2)

Retourneert het totale aantal schrikkeldagen in de jaren binnen range(y1, y2).

5

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

Retourneert een multiline-string met een kalender voor maand month van jaar year, één regel per week plus twee header-regels. w is de breedte in karakters per datum; elke regel heeft lengte 7*w+6. l is het aantal regels per week.

6

calendar.monthcalendar(year, month)

Retourneert een lijst van lijsten van ints. Elke sublijst vertegenwoordigt een week. Dagen buiten maand month van jaar year zijn 0; dagen binnen de maand zijn hun dag-van-de-maand, 1 en hoger.

7

calendar.monthrange(year, month)

Retourneert twee integers. De eerste is de code van de weekdag voor de eerste dag van de maand month in jaar year; de tweede is het aantal dagen in de maand. Weekdag-codes zijn 0 (maandag) tot 6 (zondag); maandnummers 1 tot 12.

8

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

Als print calendar.calendar(year, w, l, c).

9

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

Als print calendar.month(year, month, w, l).

10

calendar.setfirstweekday(weekday)

Stelt de eerste dag van elke week in op weekdag-code weekday. Weekdag-codes zijn 0 (maandag) tot 6 (zondag).

11

calendar.timegm(tupletime)

De inverse van time.gmtime: accepteert een tijdstip in time-tuple vorm en retourneert hetzelfde instant als floating-point aantal seconden sinds de epoch.

12

calendar.weekday(year, month, day)

Retourneert de weekdag-code voor de gegeven datum. Weekdag-codes zijn 0 (maandag) tot 6 (zondag); maandnummers 1 (januari) tot 12 (december).

Andere Modules & Functies

Als je geïnteresseerd bent, vind je hier een lijst met andere belangrijke modules en functies om met datum & tijd in Python te werken:

  • De datetime Module

  • De pytz Module

  • De dateutil Module

Python

  1. Python Datatypes onder de knie krijgen: Een praktische gids
  2. Python Operators onder de knie krijgen: Een uitgebreide gids
  3. Python Pass Statement onder de knie krijgen: Een praktische gids
  4. Python Functie-argumenten onder de knie krijgen: Positionele, Keyword en Default Parameters
  5. Python-dictionaries beheersen: aanmaken, manipuleren en geavanceerde technieken
  6. Python datetime beheersen: praktische gids voor datums, tijden en tijdzones
  7. Huidige datum en tijd ophalen in Python: een praktische gids
  8. Python: Huidige tijd en tijdzonedata eenvoudig ophalen
  9. Python's time-module beheersen: functies, structs en praktische voorbeelden
  10. Python's time.sleep() onder de knie krijgen: best practices, multithreading en real-world voorbeelden
  11. Java Datum en Tijd Onder de Knie: Constructors, Methods & Best Practices