I den här artikeln lär du dig att skapa ett datetime-objekt från en sträng (med hjälp av exempel).
Den strptime()
metod skapar en datetime-objekt från den givna strängen.
Obs! Du kan inte skapa datetime
objekt från varje sträng. Strängen måste ha ett visst format.
Exempel 1: sträng till datetime-objekt
from datetime import datetime date_string = "21 June, 2018" print("date_string =", date_string) print("type of date_string =", type(date_string)) date_object = datetime.strptime(date_string, "%d %B, %Y") print("date_object =", date_object) print("type of date_object =", type(date_object))
När du kör programmet blir resultatet:
date_string = 21 juni, 2018 typ av date_string = date_object = 2018-06-21 00:00:00 typ av date_object =
Hur fungerar strptime ()?
Den strptime()
klassmetod tar två argument:
- sträng (som konverteras till datetime)
- formatera koden
Baserat på den använda strängen och formatkoden returnerar metoden sitt motsvarande datetime
objekt.
I exemplet ovan:
Här,
%d
- Representerar månadsdagen. Exempel: 01, 02, …, 31%B
- Månadens fullständiga namn. Exempel: januari, februari etc.%Y
- År med fyra siffror. Exempel: 2018, 2019 etc.
Exempel 2: sträng till datetime-objekt
from datetime import datetime dt_string = "12/11/2018 09:15:32" # Considering date is in dd/mm/yyyy format dt_object1 = datetime.strptime(dt_string, "%d/%m/%Y %H:%M:%S") print("dt_object1 =", dt_object1) # Considering date is in mm/dd/yyyy format dt_object2 = datetime.strptime(dt_string, "%m/%d/%Y %H:%M:%S") print("dt_object2 =", dt_object2)
När du kör programmet blir resultatet:
dt_object1 = 2018-11-12 09:15:32 dt_object2 = 2018-12-11 09:15:32
Formatera kodlista
Tabellen nedan visar alla formatkoder som du kan använda.
Direktiv | Menande | Exempel |
%a | Förkortat veckodagsnamn. | Sön, må, … |
%A | Hela veckodagens namn. | Söndag måndag,… |
%w | Veckodag som ett decimaltal. | 0, 1,…, 6 |
%d | Månadens dag som ett nollpolstrat decimal. | 01, 02,…, 31 |
%-d | Månadens dag som ett decimaltal. | 1, 2,…, 30 |
%b | Förkortat månadsnamn. | Jan, feb, …, dec |
%B | Hela månadens namn. | Januari februari,… |
%m | Månad som ett nollpolstrat decimaltal. | 01, 02,…, 12 |
%-m | Månad som decimaltal. | 1, 2,…, 12 |
%y | År utan århundrade som ett nollpolstrat decimaltal. | 00, 01,…, 99 |
%-y | År utan århundrade som decimaltal. | 0, 1,…, 99 |
%Y | År med århundrade som decimaltal. | 2013, 2019 etc. |
%H | Timme (24-timmarsur) som ett nollpolstrat decimaltal. | 00, 01,…, 23 |
%-H | Timme (24-timmarsur) som ett decimaltal. | 0, 1, …, 23 |
%I | Timme (12-timmarsur) som ett nollpolstrat decimaltal. | 01, 02,…, 12 |
%-I | Timme (12-timmarsur) som ett decimaltal. | 1, 2, … 12 |
%p | Lokalens AM eller PM. | AM PM |
%M | Minut som ett nollpolstrat decimaltal. | 00, 01,…, 59 |
%-M | Minut som decimaltal. | 0, 1,…, 59 |
%S | För det andra som ett nollpolstrat decimaltal. | 00, 01,…, 59 |
%-S | För det andra som ett decimaltal. | 0, 1,…, 59 |
%f | Mikrosekund som ett decimaltal, nollpolstrat till vänster. | 000000 - 999999 |
%z | UTC-förskjutning i form + HHMM eller -HHMM. | |
%Z | Tidszonens namn. | |
%j | Årets dag som ett nollpolstrat decimaltal. | 001, 002,…, 366 |
%-j | Årets dag som decimaltal. | 1, 2,…, 366 |
%U | Årets veckonummer (söndag som första veckodag). Alla dagar i ett nytt år före den första söndagen anses vara i vecka 0. | 00, 01,…, 53 |
%W | Årets veckonummer (måndag som första veckodag). Alla dagar i ett nytt år som föregår den första måndagen anses vara i vecka 0. | 00, 01,…, 53 |
%c | Lokalens lämpliga datum- och tidsrepresentation. | Mån 30 sep 07:06:05 2013 |
%x | Lokalens lämpliga datumrepresentation. | 09/30/13 |
%X | Lokalens lämpliga tidsrepresentation. | 07:06:05 |
%% | En bokstavlig "%" karaktär. | % |
ValueError in strptime ()
Om strängen (första argumentet) och formatkoden (andra argumentet) som skickas till den strptime()
inte matchar kommer du att få ValueError
. Till exempel:
from datetime import datetime date_string = "12/11/2018" date_object = datetime.strptime(date_string, "%d %m %Y") print("date_object =", date_object)
Om du kör det här programmet får du ett fel.
ValueError: tidsdata '12/11/2018' matchar inte formatet '% d% m% Y'
Rekommenderade avläsningar: Python strftime ()