Man ir milzīgs saraksts ar šādiem datumiem un laikiem kā virknēm:
Jun 1 2005 1:33PM
Aug 28 1999 12:00AM
Es'grasos tos ievietot atpakaļ datubāzē atbilstošos datetime laukos, tāpēc man tie ir jāpārveido par reāliem datetime objektiem.
Tas notiek, izmantojot Django ORM, tāpēc es nevaru izmantot SQL, lai veiktu konversiju pēc ielikšanas.
datetime.strptime
ir galvenā rutīna, kas ļauj analizēt virknes, pārveidojot tās datumā. Tā var apstrādāt visdažādākos formātus, un formātu nosaka pēc jūsu dotās formāta virknes:
from datetime import datetime
datetime_object = datetime.strptime('Jun 1 2005 1:33PM', '%b %d %Y %I:%M%p')
Rezultātā iegūtais datetime
objekts nav atkarīgs no laika joslas.
Saites:
Python dokumentācija strptime
/strftime
formāta virknēm: Python 2, Python 3.
strftime.org ir arī ļoti laba atsauce uz strftime.
Piezīmes:
strptime
= "string parse time"strftime
= "string format time"Izmantojiet trešās puses dateutil bibliotēku:
from dateutil import parser
parser.parse("Aug 28 1999 12:00AM") # datetime.datetime(1999, 8, 28, 0, 0)
Tā var apstrādāt lielāko daļu datumu formātu, tostarp arī to, kas jums ir jāanalizē. Tā ir ērtāka par strptime
, jo lielākoties spēj uzminēt pareizo formātu.
Tas ir ļoti noderīgs, rakstot testus, kur lasāmība ir svarīgāka par veiktspēju.
To var instalēt ar:
pip install python-dateutil
Pārbaudiet strptime moduli time. Tas ir apgriezts 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)