I denne artikkelen lærer du å lage et datetime-objekt fra en streng (ved hjelp av eksempler).
Den strptime()
metoden skaper en datetime objekt fra den gitte strengen.
Merk: Du kan ikke opprette datetime
objekt fra hver streng. Strengen må være i et bestemt format.
Eksempel 1: streng til 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 kjører programmet, vil utdataene være:
date_string = 21. juni 2018 type date_string = date_object = 2018-06-21 00:00:00 type date_object =
Hvordan fungerer strptime ()?
Den strptime()
klassen metoden tar to argumenter:
- streng (som konverteres til datetime)
- formatkode
Basert på streng og formatkode som brukes, returnerer metoden det tilsvarende datetime
objektet.
I eksemplet ovenfor:
Her,
%d
- Representerer månedsdagen. Eksempel: 01, 02,…, 31%B
- Månedens navn i sin helhet. Eksempel: januar, februar osv.%Y
- År med fire sifre. Eksempel: 2018, 2019 etc.
Eksempel 2: streng til 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 kjører programmet, vil utdataene være:
dt_object1 = 2018-11-12 09:15:32 dt_object2 = 2018-12-11 09:15:32
Format kodeliste
Tabellen nedenfor viser alle formatkodene du kan bruke.
Direktiv | Betydning | Eksempel |
%a | Forkortet navn på ukedag. | Søn, man, … |
%A | Fullt ukedagsnavn. | Søndag Mandag,… |
%w | Ukedag som desimaltall. | 0, 1,…, 6 |
%d | Månedens dag som en null-polstret desimal. | 01, 02,…, 31 |
%-d | Månedens dag som et desimaltall. | 1, 2,…, 30 |
%b | Forkortet månedsnavn. | Jan, Feb,…, Des |
%B | Fullt månedsnavn. | Januar februar,… |
%m | Måned som et null-polstret desimaltall. | 01, 02,…, 12 |
%-m | Måned som desimaltall. | 1, 2,…, 12 |
%y | År uten århundre som et null-polstret desimaltall. | 00, 01,…, 99 |
%-y | År uten århundre som desimaltall. | 0, 1,…, 99 |
%Y | År med århundre som desimaltall. | 2013, 2019 etc. |
%H | Time (24-timers klokke) som et null-polstret desimaltall. | 00, 01,…, 23 |
%-H | Time (24-timers klokke) som et desimaltall. | 0, 1,…, 23 |
%I | Time (12-timers klokke) som et null-polstret desimaltall. | 01, 02,…, 12 |
%-I | Time (12-timers klokke) som et desimaltall. | 1, 2,… 12 |
%p | Lokalens AM eller PM. | MORGEN KVELD |
%M | Minutt som et desimaltall uten polstring. | 00, 01,…, 59 |
%-M | Minutt som desimaltall. | 0, 1,…, 59 |
%S | Andre som et null-polstret desimaltall. | 00, 01,…, 59 |
%-S | Andre som et desimaltall. | 0, 1,…, 59 |
%f | Mikrosekund som et desimaltall, nullpolstret til venstre. | 000000 - 999999 |
%z | UTC-forskyvning i form + HHMM eller -HHMM. | |
%Z | Tidssone navn. | |
%j | Årets dag som et nullpolstret desimaltall. | 001, 002,…, 366 |
%-j | Årets dag som desimaltall. | 1, 2,…, 366 |
%U | Årets ukenummer (søndag som første ukedag). Alle dager i et nytt år før den første søndagen regnes som å være i uke 0. | 00, 01,…, 53 |
%W | Ukens nummer på året (mandag som første ukedag). Alle dager i et nytt år som går før den første mandagen regnes som i uke 0. | 00, 01,…, 53 |
%c | Lokalitetens passende dato og klokkeslettrepresentasjon. | Man 30. september 07:06:05 2013 |
%x | Lokalens passende datorepresentasjon. | 09/30/13 |
%X | Lokalens passende tidsrepresentasjon. | 07:06:05 |
%% | En bokstavelig '%' karakter. | % |
ValueError i strptime ()
Hvis strengen (første argument) og formatkoden (andre argument) som sendes til strptime()
ikke stemmer overens, får du ValueError
. For eksempel:
from datetime import datetime date_string = "12/11/2018" date_object = datetime.strptime(date_string, "%d %m %Y") print("date_object =", date_object)
Hvis du kjører dette programmet, får du en feil.
ValueError: tidsdata '12/11/2018' samsvarer ikke med formatet '% d% m% Y'
Anbefalte målinger: Python strftime ()