Hur man formaterar datum i Python

Beskrivning

Python kommer med en mängd användbara föremål som kan användas direkt. Datumobjekt är exempel på sådana objekt. Datumtyper är svåra att manipulera från början, på grund av komplexiteten i datum och tider. Men Python-datumobjekt gör det extremt enkelt att konvertera datum till de önskvärda strängformaten.

Datumformatering är en vanlig uppgift som du kommer att möta som programmerare, och att kommunicera datum korrekt till slutanvändare, om din applikation avslöjar dem, är en viktig del av UX.

Olika regioner runt om i världen har olika sätt att representera datum/tider, därför är ditt mål som programmerare att presentera datumvärdena på ett sätt som är läsbart för användarna.

Till exempel kan du behöva representera ett datumvärde numeriskt som "02-23-2023". På baksidan kan du behöva skriva samma datumvärde i ett längre textformat som "23 feb 2023". I ett annat scenario kanske du vill extrahera månaden i strängformat från ett numeriskt formaterat datumvärde.

I den här artikeln kommer vi att studera olika typer av datumobjekt tillsammans med deras funktionalitet.

Datetime-modulen

Pythons datetime modulen innehåller metoder som kan användas för att arbeta med datum- och tidsvärden. För att använda den här modulen importerar vi den först via import uttalande enligt följande:

import datetime

Vi kan representera tidsvärden med hjälp av time klass. Attributen för time klass inkluderar timme, minut, sekund och mikrosekund.

Notera: Argumenten för time klass är valfria. Även om du inte anger något argument får du tillbaka en tid på 0, vilket är osannolikt det du behöver för det mesta.

Till exempel kan du initiera ett tidsobjekt med ett värde på 1 timme, 10 minuter, 20 sekunder och 13 mikrosekunder med:

t = datetime.time(1, 10, 20, 13)

För att se tiden, låt oss använda print fungera:

print(t)

För att extrahera fält, såsom timme, minut, sekund eller mikrosekund – kan du komma åt respektive fält:

print('hour:', t.hour)

Minuterna, sekunderna och mikrosekunderna för ovanstående tid kan hämtas enligt följande:

print('Minutes:', t.minute) 
print('Seconds:', t.second) 
print('Microsecond:', t.microsecond) 

Värdena för kalenderdatumet kan representeras via date klass. Förekomsterna kommer att ha attribut för år, månad och dag.

Låt oss ringa today() metod för att se dagens datum:

import datetime

today = datetime.date.today()
print(today) 

Koden kommer att returnera datumet för idag, därför kommer utdata du ser att bero på dagen du kör ovanstående skript.

Låt oss nu ringa ctime metod för att skriva ut datumet i ett annat format:

print('ctime:', today.ctime())

Smakämnen ctime Metoden använder ett längre datum-tid-format än de exempel vi såg tidigare. Denna metod används främst för att konvertera Unix-tid (antalet sekunder sedan 1 januari 1970) till ett strängformat.

Och här är hur vi kan visa år, månad och dag med hjälp av date klass:

print('Year:', today.year)
print('Month:', today.month)
print('Day :', today.day)

Detta resulterar i:

Year: 2022
Month: 9
Day : 15

Konvertera datum till strängar med strftime ()

Nu när du vet hur man skapar datum- och tidsobjekt, låt oss lära oss hur man formaterar dem till mer läsbara strängar.

För att uppnå detta kommer vi att använda strftime() metod. Den här metoden hjälper oss att konvertera datumobjekt till läsbara strängar. Det krävs två parametrar, som visas i följande syntax:

time.strftime(format, t)

Den första parametern är formatsträngen, medan den andra parametern är tiden som ska formateras, vilket är valfritt.

Denna metod kan också användas på en datetime objekt direkt, som visas i följande exempel:

import datetime

x = datetime.datetime(2022, 9, 15)
print(x.strftime("%b %d %Y %H:%M:%S"))

Kolla in vår praktiska, praktiska guide för att lära dig Git, med bästa praxis, branschaccepterade standarder och medföljande fuskblad. Sluta googla Git-kommandon och faktiskt lära Det!

Vi har använt följande teckensträngar för att formatera datumet:

  • %b: Returnerar de tre första tecknen i månadens namn. I vårt exempel returnerade det "sep".
  • %d: Returnerar dag i månaden, från 1 till 31. I vårt exempel returnerade det "15".
  • %Y: Returnerar året i fyrsiffrigt format. I vårt exempel returnerade det "2022".
  • %H: Returnerar timmen. I vårt exempel returnerade det "00".
  • %M: Returnerar minuten, från 00 till 59. I vårt exempel returnerade den "00".
  • %S: Returnerar den andra, från 00 till 59. I vårt exempel returnerade den "00".

Vi passerade inte en tid, därför är värdena för tid alla "00". Följande exempel visar hur tiden också kan formateras:

import datetime

x = datetime.datetime(2022, 9, 15, 12, 45, 35)
print(x.strftime("%b %d %Y %H:%M:%S"))

Den kompletta teckenkodlistan

Förutom de teckensträngar som anges ovan, är strftime Metoden tar flera andra direktiv för formatering av datumvärden:

  • %a: Returnerar de tre första tecknen i veckodagen, t.ex. ons.
  • %A: Returnerar veckodagens fullständiga namn, t.ex. onsdag.
  • %B: Returnerar månadens fullständiga namn, t.ex. september.
  • %w: Returnerar veckodagen som ett tal, från 0 till 6, där söndag är 0.
  • %m: Returnerar månaden som ett tal, från 01 till 12.
  • %p: Returnerar AM/PM för tid.
  • %y: Returnerar året i tvåsiffrigt format, det vill säga utan århundradet. Till exempel "18" istället för "2018".
  • %f: Returnerar mikrosekund från 000000 till 999999.
  • %Z: Returnerar tidszonen.
  • %z: Returnerar UTC-offset.
  • %j: Returnerar numret på dagen på året, från 001 till 366.
  • %W: Returnerar veckonummer för året, från 00 till 53, där måndagen räknas som veckans första dag.
  • %U: Returnerar veckonummer för året, från 00 till 53, med söndagen räknad som den första dagen i varje vecka.
  • %c: Returnerar den lokala versionen av datum och tid.
  • %x: Returnerar den lokala versionen av datum.
  • %X: Returnerar den lokala versionen av tid.

Tänk på följande exempel:

import datetime

x = datetime.datetime(2022, 9, 15)
print(x.strftime('%b/%d/%Y'))

Och så här kan du bara få månaden:

print(x.strftime('%B'))

Låt oss visa året:

print(x.strftime('%Y'))

I det här exemplet har vi använt formatkoden %Y. Lägg märke till att Y står med versaler. Skriv det nu med gemener:

print(x.strftime('%y'))

Som du kan se kan du med dessa formateringskoder representera datum-tid i nästan vilken form du vill.

Konvertera strängar till datum med strptime

Smakämnen strftime() metod hjälpte oss att konvertera datumobjekt till mer läsbara strängar. De strptime() metoden gör tvärtom, det vill säga den tar strängar och konverterar dem till datumobjekt som Python kan förstå.

Detta är användbart när du får ett strängformaterat datum och vill konvertera det till ett annat strängformaterat datum. Genom att konvertera till ett mellanliggande datetime-objekt får du tillgång till en tolkad struktur som kan formateras om till vilket annat format som helst.

Här är syntaxen för metoden:

datetime.strptime(string, format)

Smakämnen string parameter är värdet i strängformat som vi vill konvertera till datumformat. De format parameter är direktivet som anger formatet som ska användas vid datumet efter konverteringen.

Låt oss till exempel säga att vi behöver konvertera strängen "9/15/22" till en datetime objekt.

Låt oss först importera datetime modul:

from datetime import datetime

Vi kan sedan definiera datumet i form av en sträng:

str = '9/15/22'

Python kommer inte att kunna förstå strängen ovan som en datumtid förrän vi konverterar den till en faktisk datetime objekt. Vi kan framgångsrikt göra det genom att ringa till strptime metod.

Kör följande kommando för att konvertera strängen:

date_object = datetime.strptime(str, '%m/%d/%y')

Låt oss nu ringa till print funktion för att visa strängen i datetime formatera:

print(date_object)

Som du kan se var konverteringen lyckad!

Du kan nu konvertera detta datumobjekt till vilket annat strängformat som helst.

Att hantera olika separatorer är lika enkelt som att använda dem i formatsträngen:

from datetime import datetime

str = '9-15-22'
date_object = datetime.strptime(str, '%m-%d-%y')
print(date_object)

Slutsats

I den här artikeln studerade vi hur man formaterar datum i Python. Vi såg hur datetime modulen i Python kan användas för att manipulera datum- och tidsvärden. Modulen innehåller ett antal klasser som kan användas för detta ändamål. Till exempel time klass används för att representera tidsvärden medan date klass används för att representera kalenderdatumvärden.

Tidsstämpel:

Mer från Stackabuse