Datatime standarde e bibliotekës Python mund të përdoret për të përpunuar datat dhe orët (datat, orët dhe kohët). Metodat strftime() dhe strptime(), të cilat konvertojnë datat dhe kohët në dhe nga vargjet, mund të përdoren për të manipuluar datat dhe kohët në një sërë formatesh.
Ai gjithashtu mund të kryejë veprime të tilla si zbritja dhe mbledhja. Për shembull, mund të llogarisni dhe merrni me lehtësi datën 10 ditë më parë ose 3 javë nga tani, ose kohën 50 minuta nga tani.
Së pari, ne do të përshkruajmë klasat e mëposhtme të objekteve të disponueshme në modulin datatime.
datetime.datetime
:Data dhe ora (data dhe ora)datetime.date
:Datadatetime.time
:Kohadatetime.timedelta
:Diferenca kohore dhe koha e kaluar
Shpjegohen gjithashtu metodat strftime() dhe strptime(), të cilat konvertojnë datën/kohën dhe vargun me njëri-tjetrin.
datetime
Objektdatetime.now()
:Data e sotme, ora aktualedatetime
Ndërtuesi i objekteve- Konvertimi i një objekti datatime në një objekt data
date
Objektdate.today()
:Data e sotme- Konstruktori për objektin e datës
time
Objekt- Konstruktor për objektin kohor
timedelta
Objekt- Zbrisni objektet datatime dhe data për të krijuar objekte timedelta.
- Konstruktor për objektin timedelta
- Zbritja dhe mbledhja duke përdorur objekte timedelta
strftime()
:Konvertimi nga data dhe ora në vargstrptime()
:Konvertimi nga vargu në datë dhe orë
Gjithashtu i përfshirë në bibliotekën standarde është moduli i kalendarit, i cili gjeneron kalendarët në tekst të thjeshtë ose format HTML.
objekti i datës
Një objekt datatime është një objekt që ka informacion për datën (vitin, muajin, ditën) dhe kohën (orë, minutë, sekondë, mikrosekondë). Ju mund t’i aksesoni ato informacione me atributet e mëposhtme.
year
month
day
hour
minute
second
microsecond
datetime.now():Data e sotme, ora aktuale
datetime.now() do t’ju japë një objekt datetime me datën e sotme (datën aktuale) dhe kohën aktuale.
import datetime
dt_now = datetime.datetime.now()
print(dt_now)
# 2018-02-02 18:31:13.271231
print(type(dt_now))
# <class 'datetime.datetime'>
print(dt_now.year)
# 2018
print(dt_now.hour)
# 18
Konstruktori për objektin datatime
Është gjithashtu e mundur të gjenerohen objekte datatime për data dhe kohë arbitrare.
Konstruktori për objektin datatime është si më poshtë.
datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None)
Vlerat e mëposhtme janë të nevojshme dhe të tjerat mund të hiqen. Nëse hiqet, vlera e paracaktuar është 0.
year
month
day
dt = datetime.datetime(2018, 2, 1, 12, 15, 30, 2000)
print(dt)
# 2018-02-01 12:15:30.002000
print(dt.minute)
# 15
print(dt.microsecond)
# 2000
dt = datetime.datetime(2018, 2, 1)
print(dt)
# 2018-02-01 00:00:00
print(dt.minute)
# 0
Konvertimi i një objekti datatime në një objekt data
Një objekt datatime mund të konvertohet në një objekt date me metodën date(), siç përshkruhet më poshtë.
print(dt_now)
print(type(dt_now))
# 2018-02-02 18:31:13.271231
# <class 'datetime.datetime'>
print(dt_now.date())
print(type(dt_now.date()))
# 2018-02-02
# <class 'datetime.date'>
objekt data
Një objekt data është një objekt që përmban informacion për një datë (vit, muaj, ditë). Mund të aksesohet nga atributet viti, muaji dhe dita.
date.today():Data e sotme
Objekti i datës së datës aktuale (data e sotme) mund të merret me date.sot().
d_today = datetime.date.today()
print(d_today)
# 2018-02-02
print(type(d_today))
# <class 'datetime.date'>
print(d_today.year)
# 2018
Konstruktori për objektin e datës
Konstruktori për objektin e datës është si më poshtë
date(year, month, day)
Të gjitha kërkohen dhe nuk mund të anashkalohen.
d = datetime.date(2018, 2, 1)
print(d)
# 2018-02-01
print(d.month)
# 2
objekt kohor
Objekti kohor është një objekt që përmban informacion për kohën (orë, minuta, sekonda dhe mikrosekonda). Mund të arrihet duke përdorur atributet orë, minutë, sekondë dhe mikrosekondë.
Konstruktor për objektin kohor
Konstruktori i objektit kohor është si më poshtë.
time(hour=0, minute=0, second=0, microsecond=0, tzinfo=None)
Të gjitha ato janë opsionale, dhe nëse hiqen, vendosen në 0.
t = datetime.time(12, 15, 30, 2000)
print(t)
# 12:15:30.002000
print(type(t))
# <class 'datetime.time'>
print(t.hour)
# 12
t = datetime.time()
print(t)
# 00:00:00
objekt kohore
Objekti timedelta është një objekt që përfaqëson diferencën kohore midis dy datave dhe orëve, ose kohën e kaluar. Ai ka informacion në ditë, sekonda dhe mikrosekonda dhe mund të aksesohet nga atributet ditë, sekonda dhe mikrosekonda. Është gjithashtu e mundur të merret numri i përgjithshëm i sekondave duke përdorur metodën total_seconds().
Zbrisni objektet datatime dhe data për të krijuar objektin timedelta.
Zbritja e objekteve datatime nga njëri-tjetri jep një objekt timedelta.
td = dt_now - dt
print(td)
# 1 day, 18:31:13.271231
print(type(td))
# <class 'datetime.timedelta'>
print(td.days)
# 1
print(td.seconds)
# 66673
print(td.microseconds)
# 271231
print(td.total_seconds())
# 153073.271231
Zbritja e objekteve të datës nga njëri-tjetri jep në mënyrë të ngjashme një objekt kohor.
Konstruktor për objektin timedelta
Konstruktori i objektit timedelta është si më poshtë
timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
Të gjitha ato janë opsionale, dhe nëse hiqen, vendosen në 0.
Vini re se objekti timedelta përmban vetëm informacionin e mëposhtëm.
- një numër ditësh:
days
- numri i sekondave:
seconds
- numërimi i mikrosekondës:
microseconds
Për shembull, dy të mëposhtmet janë të barabarta
weeks=1
days=7
td_1w = datetime.timedelta(weeks=1)
print(td_1w)
# 7 days, 0:00:00
print(td_1w.days)
# 7
Zbritja dhe mbledhja duke përdorur objekte timedelta
Objekti timedelta mund të përdoret me objektet datatime dhe data për të kryer veprime të tilla si zbritja dhe mbledhja. Për shembull, mund të llogarisni dhe merrni lehtësisht datën një javë më parë ose 10 ditë nga tani, ose kohën 50 minuta nga tani.
d_1w = d_today - td_1w
print(d_1w)
# 2018-01-26
td_10d = datetime.timedelta(days=10)
print(td_10d)
# 10 days, 0:00:00
dt_10d = dt_now + td_10d
print(dt_10d)
# 2018-02-12 18:31:13.271231
td_50m = datetime.timedelta(minutes=50)
print(td_50m)
# 0:50:00
print(td_50m.seconds)
# 3000
dt_50m = dt_now + td_50m
print(dt_50m)
# 2018-02-02 19:21:13.271231
Mund të përdoret gjithashtu për të llogaritur numrin e ditëve deri në një datë specifike.
d_target = datetime.date(2020, 7, 24)
td = d_target - d_today
print(td)
# 903 days, 0:00:00
print(td.days)
# 903
strftime():Konvertimi nga data dhe ora në varg
Metoda strftime() e objekteve datatime dhe data mund të përdoret për të kthyer informacionin e datës dhe orës (data dhe ora) në një varg në çdo format formati.
kodi i formatimit
Shikoni dokumentacionin zyrtar më poshtë për kodet e disponueshme të formatimit.
Kodet kryesore të formatimit janë renditur më poshtë.
%d
:Dita e muajit me shënim dhjetor me zero të mbushur.%m
:Muaji në shënim dhjetor me zero të mbushur.%y
:Dy shifrat e fundit të vitit në shënim dhjetor të mbushur me zero.%Y
:Katër shifra të vitit në shënim dhjetor me zero të mbushura.%H
:Kur shprehet me shënim dhjetor me zero të mbushur (shënim 24-orësh)%I
:Kur shprehet në shënim dhjetor me zero të mbushur (shënim 12-orësh)%M
:Për shënimin dhjetor me zero të mbushur.%S
:Sekonda në shënimin dhjetor me zero të mbushura.%f
:Mikrosekonda (6 shifra) me shënime dhjetore me 0 të mbushur.%A
:Emri i ditës së javës për vendndodhjen%a
:Emri i ditës për vendndodhjen (forma e shkurtuar)%B
:Emri i muajit lokal%b
:Emri i muajit lokal (forma e shkurtuar)%j
:Dita e vitit me shënim dhjetor me mbushje zero.%U
:Numri i javës së vitit në shënim dhjetor me mbushje zero (java fillon të dielën)%W
:Numri i javës së vitit në shënim dhjetor me mbushje zero (java fillon të hënën)
Kodet e mëposhtme të formatimit për emrat e ditëve dhe muajve mund të merren në vargje të ndryshme në varësi të vendndodhjes.
%A
%a
%B
%b
Ekziston gjithashtu një metodë e dedikuar për vargjet e formatit ISO 8601.
Shembull i kodit
print(dt_now.strftime('%Y-%m-%d %H:%M:%S'))
# 2018-02-02 18:31:13
print(d_today.strftime('%y%m%d'))
# 180202
print(d_today.strftime('%A, %B %d, %Y'))
# Friday, February 02, 2018
print('Day number (how many days in a year / January 1 is 001):', d_today.strftime('%j'))
print('Week number (the week starts on Sunday / New Year's Day is 00):', d_today.strftime('%U'))
print('Week number (the week begins on Monday / New Year's Day is 00):', d_today.strftime('%W'))
# Day number (how many days in a year / January 1 is 001): 033
# Week number (the week starts on Sunday / New Year's Day is 00): 04
# Week number (the week begins on Monday / New Year's Day is 00): 05
Nëse dëshironi të merrni një numër në vend të një vargu, thjesht konvertoni atë në një numër të plotë me int().
week_num_mon = int(d_today.strftime('%W'))
print(week_num_mon)
print(type(week_num_mon))
# 5
# <class 'int'>
Në kombinim me objektin timedelta, është e lehtë të krijosh, për shembull, një listë datash dyjavore në çdo format.
d = datetime.date(2018, 2, 1)
td = datetime.timedelta(weeks=2)
n = 8
f = '%Y-%m-%d'
l = []
for i in range(n):
l.append((d + i * td).strftime(f))
print(l)
# ['2018-02-01', '2018-02-15', '2018-03-01', '2018-03-15', '2018-03-29', '2018-04-12', '2018-04-26', '2018-05-10']
print('\n'.join(l))
# 2018-02-01
# 2018-02-15
# 2018-03-01
# 2018-03-15
# 2018-03-29
# 2018-04-12
# 2018-04-26
# 2018-05-10
Përdorimi i shënimit të kuptimit të listës është më i zgjuar.
l = [(d + i * td).strftime(f) for i in range(n)]
print(l)
# ['2018-02-01', '2018-02-15', '2018-03-01', '2018-03-15', '2018-03-29', '2018-04-12', '2018-04-26', '2018-05-10']
- Artikuj të ngjashëm:Përdorimi i shënimit të kuptimit të listës Python
strptime():Konvertimi nga vargu në datë dhe orë
datetime strptime() mund të përdoret për të krijuar një objekt datatime nga një varg data ose ora. Është e nevojshme të specifikoni vargun e formatimit që korrespondon me vargun origjinal.
Ekziston gjithashtu një metodë e dedikuar për vargjet ISO 8601 (Python 3.7 ose më vonë).
Shembull i kodit
date_str = '2018-2-1 12:30'
date_dt = datetime.datetime.strptime(date_str, '%Y-%m-%d %H:%M')
print(date_dt)
# 2018-02-01 12:30:00
print(type(date_dt))
# <class 'datetime.datetime'>
Duke përdorur metodën strftime() në objektin e marrë datatime, ju mund të përfaqësoni datën dhe kohën në një format të ndryshëm nga vargu origjinal.
print(date_dt.strftime('%Y-%m-%d %H:%M'))
# 2018-02-01 12:30
Nëse e konvertoni atë në një objekt datatime, mund të kryeni gjithashtu operacione me objekte timedelta, kështu që për shembull, mund të gjeneroni një varg të një date 10 ditë më parë në të njëjtin format.
date_str = '2018-2-1'
date_format = '%Y-%m-%d'
td_10_d = datetime.timedelta(days=10)
date_dt = datetime.datetime.strptime(date_str, date_format)
date_dt_new = date_dt - td_10_d
date_str_new = date_dt_new.strftime(date_format)
print(date_str_new)
# 2018-01-22