Mám obrovský zoznam takýchto dátumov ako reťazce:
Jun 1 2005 1:33PM
Aug 28 1999 12:00AM
Budem ich vkladať späť do správnych dátumových polí v databáze, takže ich potrebujem zakúzliť do skutočných dátumových objektov.
Toto prechádza cez Django's ORM, takže nemôžem použiť SQL na vykonanie konverzie pri vkladaní.
datetime.strptime
je hlavná rutina na analýzu reťazcov na časy dátumov. Dokáže spracovať všetky druhy formátov, pričom formát je určený formátovacím reťazcom, ktorý jej zadáte:
from datetime import datetime
datetime_object = datetime.strptime('Jun 1 2005 1:33PM', '%b %d %Y %I:%M%p')
Výsledný objekt datetime
je nezávislý na časovom pásme.
Odkazy:
Dokumentácia jazyka Python pre reťazce formátu strptime
/strftime
: Python 2, Python 3
strftime.org je tiež veľmi pekná referencia pre strftime
Poznámky:
strptime
= "string parse time"strftime
= "string format time"Použite knižnicu tretej strany dateutil:
from dateutil import parser
parser.parse("Aug 28 1999 12:00AM") # datetime.datetime(1999, 8, 28, 0, 0)
Dokáže spracovať väčšinu formátov dátumu vrátane toho, ktorý potrebujete analyzovať. Je to'pohodlnejšie ako strptime
, pretože vo väčšine prípadov dokáže odhadnúť správny formát.
Je veľmi užitočný pri písaní testov, kde je čitateľnosť dôležitejšia ako výkon.
Môžete si ho nainštalovať pomocou:
pip install python-dateutil
Pozrite si strptime v module time. Je to inverzný modul k 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)