Datums opmaken in Python

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.

Tijdstempel:

Meer van Stapelmisbruik