I denne artikel lærer du at oprette et datetime-objekt ud fra en streng (ved hjælp af eksempler).
Den strptime()
metode skaber en datetime objekt fra den givne streng.
Bemærk: Du kan ikke oprette datetime
objekt fra hver streng. Strengen skal have 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 kører programmet, vil output være:
date_string = 21. juni 2018 type dato_string = date_object = 2018-06-21 00:00:00 type date_object =
Hvordan fungerer strptime ()?
Den strptime()
klasse metode tager to argumenter:
- streng (der konverteres til datetime)
- formatkode
Baseret på den anvendte streng og formatkode returnerer metoden det tilsvarende datetime
objekt.
I ovenstående eksempel:
Her,
%d
- Repræsenterer månedsdagen. Eksempel: 01, 02,…, 31%B
- Månedens navn i sin helhed. Eksempel: januar, februar osv.%Y
- År med fire cifre. Eksempel: 2018, 2019 osv.
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 kører programmet, vil output være:
dt_object1 = 2018-11-12 09:15:32 dt_object2 = 2018-12-11 09:15:32
Formatér kodeliste
Tabellen nedenfor viser alle de formatkoder, du kan bruge.
Direktiv | Betyder | Eksempel |
%a | Forkortet navn på hverdag. | Søn, man, … |
%A | Fuldt navn på hverdage. | Søndag Mandag,… |
%w | Ugedag som et decimaltal. | 0, 1,…, 6 |
%d | Månedens dag som en nul polstret decimal. | 01, 02,…, 31 |
%-d | Månedens dag som et decimaltal. | 1, 2,…, 30 |
%b | Forkortet månedsnavn. | Jan, Feb,…, Dec |
%B | Fuld månedens navn. | Januar februar,… |
%m | Måned som et nul-polstret decimaltal. | 01, 02,…, 12 |
%-m | Måned som et decimaltal. | 1, 2,…, 12 |
%y | År uden århundrede som et nul-polstret decimaltal. | 00, 01,…, 99 |
%-y | År uden århundrede som et decimaltal. | 0, 1,…, 99 |
%Y | År med århundrede som et decimaltal. | 2013, 2019 osv. |
%H | Time (24-timers ur) som et nul-polstret decimaltal. | 00, 01,…, 23 |
%-H | Time (24-timers ur) som et decimaltal. | 0, 1,…, 23 |
%I | Time (12-timers ur) som et nul-polstret decimaltal. | 01, 02,…, 12 |
%-I | Time (12-timers ur) som et decimaltal. | 1, 2,… 12 |
%p | Lokalets AM eller PM. | AM, PM |
%M | Minut som et nul-polstret decimaltal. | 00, 01,…, 59 |
%-M | Minut som et decimaltal. | 0, 1,…, 59 |
%S | Andet som et nul-polstret decimaltal. | 00, 01,…, 59 |
%-S | Andet som et decimaltal. | 0, 1,…, 59 |
%f | Mikrosekund som et decimaltal, nul-polstret til venstre. | 000000 - 999999 |
%z | UTC-forskydning i form + HHMM eller -HHMM. | |
%Z | Tidszone navn. | |
%j | Årets dag som et nul-polstret decimaltal. | 001, 002,…, 366 |
%-j | Årets dag som et decimaltal. | 1, 2,…, 366 |
%U | Årets ugenummer (søndag som den første ugedag). Alle dage i et nyt år forud for den første søndag betragtes som i uge 0. | 00, 01,…, 53 |
%W | Ugens nummer på året (mandag som den første ugedag). Alle dage i et nyt år forud for den første mandag betragtes som i uge 0. | 00, 01,…, 53 |
%c | Lokalens passende dato og klokkeslæt repræsentation. | Man 30. september 07:06:05 2013 |
%x | Lokalens passende datorepræsentation. | 09/30/13 |
%X | Lokalens passende tidsrepræsentation. | 07:06:05 |
%% | En bogstavelig '%' karakter. | % |
ValueError i strptime ()
Hvis strengen (første argument) og formatkoden (andet argument), der sendes til den strptime()
, ikke stemmer overens, får du det 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 kører dette program, får du en fejl.
ValueError: tidsdata '12 / 11/2018 'matcher ikke formatet'% d% m% Y '
Anbefalede målinger: Python strftime ()