Hur man konverterar en sträng till ett datetime- eller tidsobjekt i Python

Python utmärker sig som ett kraftfullt verktyg för att hantera datum och tider. Ibland erhålls information om datum i form av textsträngar, som behöver omvandlas till datum- eller tidsobjekt för att möjliggöra beräkningar eller annan manipulation. Denna artikel förklarar hur du åstadkommer detta med hjälp av Pythons inbyggda datetime-modul.

Inledning

Hantering av datum och tid i Python är smidig och effektiv tack vare datetime-biblioteket. Detta bibliotek tillhandahåller diverse klasser och metoder för att generera, formatera och utföra operationer på datum och tidpunkter. Strängar är en vanlig form för datum- och tidinformation, vilka behöver konverteras till objekt för att underlätta vidare bearbetning.

Omvandla en sträng till ett datetime-objekt

För att konvertera en sträng till ett datetime-objekt används funktionen datetime.strptime(). Denna funktion kräver två argument:

1. Strängen som ska konverteras: Denna sträng måste presenteras i ett format som Python förstår.
2. Formatsträngen: Denna sträng definierar hur datum och tid är organiserade i den ursprungliga strängen.

Här följer ett exempel:


        from datetime import datetime

        datum_str = "2023-10-27"
        format_str = "%Y-%m-%d"

        datetime_obj = datetime.strptime(datum_str, format_str)

        print(datetime_obj)
    

Utskrift: 2023-10-27 00:00:00

I detta exempel är formatsträngen ”%Y-%m-%d”. Bokstäverna motsvarar olika komponenter av datumet:

  • %Y: År med fyra siffror (ex. 2023)
  • %m: Månad (01-12)
  • %d: Dag (01-31)

Om strängen inkluderar tid, kan du inkludera detta i både formatsträngen och den ursprungliga strängen:


        from datetime import datetime

        tid_str = "2023-10-27 14:30:00"
        format_str = "%Y-%m-%d %H:%M:%S"

        datetime_obj = datetime.strptime(tid_str, format_str)

        print(datetime_obj)
    

Utskrift: 2023-10-27 14:30:00

Omvandla en sträng till ett time-objekt

För att transformera en sträng till ett time-objekt används också funktionen datetime.strptime(), men med fokus på tidskomponenterna i formatsträngen.


        from datetime import datetime

        tid_str = "14:30:00"
        format_str = "%H:%M:%S"

        time_obj = datetime.strptime(tid_str, format_str).time()

        print(time_obj)
    

Utskrift: 14:30:00

Här skapas först ett datetime-objekt med strptime(), varefter attributet time() används för att extrahera ett time-objekt från datetime-objektet.

Hantera olika format

Det finns många format för representation av datum och tid. En komplett lista över formatkoder finns i Pythons officiella dokumentation: https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior.

Ytterligare formateringsfunktioner

Förutom strptime(), erbjuder datetime-modulen andra metoder för formatering av datum och tid:

  • datetime.strftime(): Denna funktion konverterar ett datum- och tidsobjekt till en sträng med ett valfritt format.
  • datetime.date(): Skapar ett date-objekt från ett datetime-objekt.
  • datetime.time(): Skapar ett time-objekt från ett datetime-objekt.

Användningsexempel

Följande exempel visar hur strängar omvandlas till datum och tid:

Exempel 1: Sträng med datum och tid till datetime-objekt


        from datetime import datetime

        datum_tid_str = "2023-10-27 14:30:00"
        format_str = "%Y-%m-%d %H:%M:%S"

        datetime_obj = datetime.strptime(datum_tid_str, format_str)

        print(datetime_obj)
    

Utskrift: 2023-10-27 14:30:00

Exempel 2: Sträng med enbart tid till ett time-objekt


        from datetime import datetime

        tid_str = "14:30:00"
        format_str = "%H:%M:%S"

        time_obj = datetime.strptime(tid_str, format_str).time()

        print(time_obj)
    

Utskrift: 14:30:00

Exempel 3: Datum i amerikanskt format (månad/dag/år) till datetime-objekt


        from datetime import datetime

        datum_str = "10/27/2023"
        format_str = "%m/%d/%Y"

        datetime_obj = datetime.strptime(datum_str, format_str)

        print(datetime_obj)
    

Utskrift: 2023-10-27 00:00:00

Slutsats

Konvertering av strängar till datum- och tidsobjekt är en grundläggande kunskap för att hantera data och tider i Python. datetime-modulen ger dig verktyg för att hantera olika format och utföra beräkningar. Denna förmåga gör det möjligt att hantera datum och tider i dina Python-program på ett smidigt sätt.

Vanliga frågor (FAQ)

1. Hur hanterar man datum och tider i olika tidszoner?

Python erbjuder bibliotek som pytz för att hantera tidszoner och omvandla datum och tider mellan dem.

2. Kan jag konvertera datumsträngar med icke-standardformat?

Ja, med strptime() kan du använda en anpassad formatsträng som matchar formatet i din indatasträng.

3. Hur formaterar jag ett datetime-objekt till en sträng?

Använd funktionen strftime() för att formatera ett datetime-objekt till en sträng med önskat format.

4. Hur genomförs beräkningar på datum och tider?

Med datetime-modulen kan du addera eller subtrahera dagar, månader eller år från ett datum.

5. Vad händer om min sträng innehåller olika separatorer?

Du behöver anpassa formatsträngen så att den matchar separatorerna i strängen. Till exempel, använd ”%Y/%m/%d” om separatorn är ”/”.

6. Hur hanteras datumformat med olika språk?

Python stöder olika språk och format genom att använda locale-modulen.

7. Hur kontrollerar jag om ett datum är giltigt?

Använd datetime.strptime() för att försöka konvertera strängen till ett datum. Om konverteringen lyckas är datumet giltigt.

8. Vad är skillnaden mellan datetime och date?

datetime-objektet representerar både datum och tid, medan date-objektet endast representerar datumet.

9. Vanliga formatkoder för strftime()?

Exempel: ”%Y” (år med fyra siffror), ”%m” (månad), ”%d” (dag), ”%H” (timme, 24-timmars format), ”%M” (minut), ”%S” (sekund).

10. Finns andra bibliotek för att hantera datum och tid i Python?

Ja, det finns andra bibliotek som pandas och arrow med mer avancerade funktioner.