Imam ogromen seznam datumov in časov, kot je ta, v obliki nizov:
Jun 1 2005 1:33PM
Aug 28 1999 12:00AM
Te bom vnesel nazaj v ustrezna datumska polja v podatkovni zbirki, zato jih moram spremeniti v prave datumske objekte.
To poteka prek Djangovega ORM, zato ne morem uporabiti SQL za pretvorbo pri vstavljanju.
datetime.strptime
je glavna rutina za razčlenjevanje nizov v datumske čase. Obdela lahko vse vrste formatov, pri čemer format določa formatni niz, ki mu ga podate:
from datetime import datetime
datetime_object = datetime.strptime('Jun 1 2005 1:33PM', '%b %d %Y %I:%M%p')
Dobljeni objekt datetime
je neodvisen od časovnega pasu.
Povezave:
Python dokumentacija za strptime
/strftime
formatne nize: Python 2, Python 3
strftime.org je tudi zelo dobra referenca za strftime
Opombe:
strptime
= "string parse time"strftime
= "string format time"Uporabite knjižnico tretje osebe dateutil:
from dateutil import parser
parser.parse("Aug 28 1999 12:00AM") # datetime.datetime(1999, 8, 28, 0, 0)
Obdela večino formatov datumov, vključno s tistim, ki ga morate razčleniti. Je bolj priročna kot strptime
, saj lahko večino časa ugiba pravilno obliko.
Zelo uporaben je pri pisanju testov, kjer je berljivost pomembnejša od zmogljivosti.
Namestite ga lahko z:
pip install python-dateutil
Preverite strptime v modulu time. To je obratno od strftime.
$ python
>>> import time
>>> time.strptime('Jun 1 2005 1:33PM', '%b %d %Y %I:%M%p')
time.struct_time(tm_year=2005, tm_mon=6, tm_mday=1,
tm_hour=13, tm_min=33, tm_sec=0,
tm_wday=2, tm_yday=152, tm_isdst=-1)