Introductie
Python wordt geleverd met een verscheidenheid aan nuttige objecten die kant-en-klaar kunnen worden gebruikt. Datumobjecten zijn voorbeelden van dergelijke objecten. Datumtypen zijn moeilijk vanaf het begin te manipuleren vanwege de complexiteit van datums en tijden. Datumobjecten in Python maken het echter uiterst eenvoudig om datums naar de gewenste tekenreeksformaten te converteren.
Datumnotatie is een veel voorkomende taak waarmee u als programmeur te maken krijgt, en het correct communiceren van datums aan eindgebruikers, als uw applicatie deze beschikbaar stelt, is een belangrijk onderdeel van UX.
Verschillende regio's over de hele wereld hebben verschillende manieren om datums/tijden weer te geven. Daarom is het jouw doel als programmeur om de datumwaarden te presenteren op een manier die leesbaar is voor de gebruikers.
Het kan bijvoorbeeld zijn dat u een datumwaarde numeriek moet weergeven, zoals '02-23-2023'. Aan de andere kant moet u mogelijk dezelfde datumwaarde in een langere tekstindeling schrijven, zoals '23 februari 2023'. In een ander scenario wilt u wellicht de maand in tekenreeksnotatie extraheren uit een numeriek opgemaakte datumwaarde.
In dit artikel zullen we verschillende soorten datumobjecten bestuderen, samen met hun functionaliteiten.
De datetime-module
Python's datetime
module bevat methoden die kunnen worden gebruikt om met datum- en tijdwaarden te werken. Om deze module te gebruiken, importeren we deze eerst via de import
verklaring als volgt:
import datetime
We kunnen tijdwaarden weergeven met behulp van de time
klas. De attributen voor de time
klasse omvat het uur, de minuut, de seconde en de microseconde.
Opmerking: De argumenten voor de time
klasse zijn optioneel. Als u echter geen enkel argument opgeeft, krijgt u een tijd van 0 terug, wat waarschijnlijk niet is wat u meestal nodig heeft.
U kunt bijvoorbeeld een tijdobject met een waarde van 1 uur, 10 minuten, 20 seconden en 13 microseconden initialiseren met behulp van:
t = datetime.time(1, 10, 20, 13)
Laten we de tijd gebruiken om de tijd te zien print
functie:
print(t)
Om velden te extraheren, zoals het uur, de minuut, de seconde of de microseconde, kunt u respectievelijk elk veld openen:
print('hour:', t.hour)
De minuten, seconden en microseconden voor bovengenoemde tijd kunnen als volgt worden opgevraagd:
print('Minutes:', t.minute)
print('Seconds:', t.second)
print('Microsecond:', t.microsecond)
De waarden voor de kalenderdatum kunnen worden weergegeven via de date
klas. De exemplaren hebben kenmerken voor jaar, maand en dag.
Laten we de bellen today()
methode om de datum van vandaag te zien:
import datetime
today = datetime.date.today()
print(today)
De code retourneert de datum voor vandaag, daarom is de uitvoer die u ziet afhankelijk van de dag waarop u het bovenstaande script uitvoert.
Laten we nu de ctime
methode om de datum in een ander formaat af te drukken:
print('ctime:', today.ctime())
De ctime
methode gebruikt een langere datum-tijdnotatie dan de voorbeelden die we eerder zagen. Deze methode wordt voornamelijk gebruikt voor het converteren van Unix-tijd (het aantal seconden sinds 1 januari 1970) naar een stringformaat.
En hier ziet u hoe we het jaar, de maand en de dag kunnen weergeven met behulp van de date
klasse:
print('Year:', today.year)
print('Month:', today.month)
print('Day :', today.day)
Dit resulteert in:
Year: 2022
Month: 9
Day : 15
Datums converteren naar tekenreeksen met strftime ()
Nu u weet hoe u Datum- en Tijd-objecten kunt maken, gaan we leren hoe u deze in beter leesbare tekenreeksen kunt opmaken.
Om dit te bereiken gaan we gebruik maken van de strftime()
methode. Deze methode helpt ons datumobjecten om te zetten in leesbare tekenreeksen. Er zijn twee parameters nodig, zoals weergegeven in de volgende syntaxis:
time.strftime(format, t)
De eerste parameter is de formatstring, terwijl de tweede parameter de tijd is die moet worden geformatteerd, wat optioneel is.
Deze methode kan ook worden gebruikt op a datetime
rechtstreeks object, zoals weergegeven in het volgende voorbeeld:
import datetime
x = datetime.datetime(2022, 9, 15)
print(x.strftime("%b %d %Y %H:%M:%S"))
Bekijk onze praktische, praktische gids voor het leren van Git, met best-practices, door de industrie geaccepteerde normen en bijgevoegd spiekbriefje. Stop met Googlen op Git-commando's en eigenlijk leren het!
We hebben de volgende tekenreeksen gebruikt om de datum op te maken:
%b
: Retourneert de eerste drie tekens van de maandnaam. In ons voorbeeld retourneerde het โSepโ.%d
: Retourneert de dag van de maand, van 1 tot 31. In ons voorbeeld retourneerde het โ15โ.%Y
: Retourneert het jaartal in viercijferige notatie. In ons voorbeeld retourneerde het โ2022โ.%H
: Geeft het uur terug. In ons voorbeeld retourneerde het โ00โ.%M
: Geeft de minuut terug, van 00 tot 59. In ons voorbeeld werd โ00โ geretourneerd.%S
: Retourneert de tweede, van 00 tot 59. In ons voorbeeld retourneerde deze โ00โ.
We hebben geen tijd doorgegeven, daarom zijn de waarden voor tijd allemaal โ00โ. Het volgende voorbeeld laat zien hoe de tijd ook kan worden geformatteerd:
import datetime
x = datetime.datetime(2022, 9, 15, 12, 45, 35)
print(x.strftime("%b %d %Y %H:%M:%S"))
De volledige lijst met tekencodes
Anders dan de tekenreeksen die hierboven zijn gegeven, is de strftime
methode heeft verschillende andere richtlijnen nodig voor het opmaken van datumwaarden:
%a
: Geeft de eerste drie tekens van de weekdag terug, bijvoorbeeld woensdag.%A
: Geeft de volledige naam van de weekdag terug, bijvoorbeeld woensdag.%B
: Retourneert de volledige naam van de maand, bijvoorbeeld september.%w
: Retourneert de weekdag als een getal, van 0 tot 6, waarbij zondag 0 is.%m
: Retourneert de maand als een getal, van 01 tot 12.%p
: Geeft AM/PM terug voor de tijd.%y
: Retourneert het jaar in tweecijferige notatie, dat wil zeggen zonder de eeuw. Bijvoorbeeld '18' in plaats van '2018'.%f
: Retourneert microseconden van 000000 tot 999999.%Z
: Retourneert de tijdzone.%z
: Retourneert UTC-offset.%j
: Retourneert het nummer van de dag in het jaar, van 001 tot 366.%W
: Retourneert het weeknummer van het jaar, van 00 tot 53, waarbij maandag wordt geteld als de eerste dag van de week.%U
: Retourneert het weeknummer van het jaar, van 00 tot 53, waarbij zondag wordt geteld als de eerste dag van elke week.%c
: Retourneert de lokale datum- en tijdversie.%x
: Retourneert de lokale versie van de datum.%X
: Retourneert de lokale versie van de tijd.
Overweeg het volgende voorbeeld:
import datetime
x = datetime.datetime(2022, 9, 15)
print(x.strftime('%b/%d/%Y'))
En zo kun je alleen de maand krijgen:
print(x.strftime('%B'))
Laten we het jaar weergeven:
print(x.strftime('%Y'))
In dit voorbeeld hebben we de formaatcode gebruikt %Y
. Merk op dat de Y
staat in hoofdletters. Schrijf het nu in kleine letters:
print(x.strftime('%y'))
Zoals u kunt zien, kunt u met deze opmaakcodes de datum-tijd in vrijwel elke gewenste vorm weergeven.
Tekenreeksen naar datums converteren met strptime
De strftime()
methode heeft ons geholpen datumobjecten om te zetten in beter leesbare tekenreeksen. De strptime()
methode doet het tegenovergestelde, dat wil zeggen, het neemt strings en converteert deze naar datumobjecten die Python kan begrijpen.
Dit is handig als u een datum met stringnotatie ontvangt en deze wilt converteren naar een andere datum met stringnotatie. Door te converteren naar een tussenliggend datetime-object krijgt u toegang tot een geparseerde structuur die opnieuw kan worden geformatteerd naar elk ander formaat.
Hier is de syntaxis voor de methode:
datetime.strptime(string, format)
De string
parameter is de waarde in tekenreeksnotatie die we naar datumnotatie willen converteren. De format
parameter is de richtlijn die het formaat specificeert dat moet worden gebruikt voor de datum na de conversie.
Laten we bijvoorbeeld zeggen dat we de tekenreeks โ9/15/22โ moeten converteren naar a datetime
voorwerp.
Laten we eerst de datetime
module:
from datetime import datetime
We kunnen dan de datum definiรซren in de vorm van een string:
str = '9/15/22'
Python zal de bovenstaande string niet als een datetime kunnen begrijpen totdat we deze naar een werkelijke string hebben omgezet datetime
voorwerp. Dat kunnen we met succes doen door te bellen naar de strptime
methode.
Voer de volgende opdracht uit om de tekenreeks te converteren:
date_object = datetime.strptime(str, '%m/%d/%y')
Laten we nu de print
functie om de string weer te geven datetime
formaat:
print(date_object)
Zoals u kunt zien, was de conversie succesvol!
U kunt dit datumobject nu naar een ander tekenreeksformaat converteren.
Het omgaan met verschillende scheidingstekens is net zo eenvoudig als het gebruik ervan in de opmaaktekenreeks:
from datetime import datetime
str = '9-15-22'
date_object = datetime.strptime(str, '%m-%d-%y')
print(date_object)
Conclusie
In dit artikel hebben we bestudeerd hoe datums in Python kunnen worden opgemaakt. Wij hebben gezien hoe de datetime
module in Python kan worden gebruikt voor het manipuleren van datum- en tijdwaarden. De module bevat een aantal klassen die hiervoor gebruikt kunnen worden. Bijvoorbeeld de time
klasse wordt gebruikt om tijdwaarden weer te geven terwijl de date
klasse wordt gebruikt om kalenderdatumwaarden weer te geven.