datetime perpustakaan standar Python bisa digunakake kanggo ngolah tanggal lan wektu (tanggal, wektu lan wektu). Cara strftime () lan strptime (), sing ngowahi tanggal lan kaping menyang lan saka strings, bisa digunakake kanggo manipulasi tanggal lan kaping ing macem-macem format.
Uga bisa nindakake operasi kayata subtraction lan tambahan. Contone, sampeyan bisa kanthi gampang ngetung lan entuk tanggal 10 dina kepungkur utawa 3 minggu saka saiki, utawa wektu 50 menit saka saiki.
Kaping pisanan, kita bakal njlèntrèhaké kelas obyek ing ngisor iki sing kasedhiya ing modul datetime.
datetime.datetime
:Tanggal lan wektu (tanggal lan wektu)datetime.date
:Tanggaldatetime.time
:Wektudatetime.timedelta
:Bedane wektu lan wektu sing wis suwe
Cara strftime () lan strptime (), sing ngowahi tanggal / wektu lan senar kanggo saben liyane, uga diterangno.
datetime
obyekdatetime.now()
:Tanggal saiki, wektu saikidatetime
Konstruktor Obyek- Ngonversi obyek datetime menyang obyek tanggal
date
obyekdate.today()
:Tanggal dina iki- Konstruktor kanggo obyek tanggal
time
obyek- Konstruktor kanggo obyek wektu
timedelta
obyek- Ngurangi obyek datetime lan tanggal kanggo nggawe obyek timedelta.
- Konstruktor kanggo obyek timedelta
- Subtraction lan tambahan nggunakake obyek timedelta
strftime()
:Konversi saka tanggal lan wektu kanggo senarstrptime()
:Konversi saka string menyang tanggal lan wektu
Uga kalebu ing perpustakaan standar yaiku modul tanggalan, sing ngasilake tanggalan ing teks biasa utawa format HTML.
obyek datetime
Objek datetime yaiku obyek sing nduweni informasi tanggal (taun, sasi, dina) lan wektu (jam, menit, detik, mikrodetik). Sampeyan bisa ngakses informasi kasebut kanthi atribut ing ngisor iki.
year
month
day
hour
minute
second
microsecond
datetime.now():Tanggal saiki, wektu saiki
datetime.now () bakal menehi obyek datetime karo tanggal dina (tanggal saiki) lan wektu saiki.
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
Konstruktor kanggo obyek datetime
Sampeyan uga bisa ngasilake obyek datetime kanggo tanggal lan wektu sing sewenang-wenang.
Konstruktor kanggo obyek datetime kaya ing ngisor iki.
datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None)
Nilai ing ngisor iki dibutuhake lan liyane bisa diilangi. Yen diilangi, nilai standar yaiku 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
Ngonversi obyek datetime menyang obyek tanggal
Objek datetime bisa diowahi dadi obyek tanggal kanthi metode tanggal (), kaya sing diterangake ing ngisor iki.
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'>
obyek tanggal
Objek tanggal yaiku obyek sing ngemot informasi babagan tanggal (taun, sasi, dina). Bisa diakses kanthi atribut taun, sasi, lan dina.
date.today():Tanggal dina iki
Objek tanggal tanggal saiki (tanggal saiki) bisa dipikolehi karo date.today ().
d_today = datetime.date.today()
print(d_today)
# 2018-02-02
print(type(d_today))
# <class 'datetime.date'>
print(d_today.year)
# 2018
Konstruktor kanggo obyek tanggal
Konstruktor kanggo obyek tanggal kaya ing ngisor iki
date(year, month, day)
Kabeh dibutuhake lan ora bisa diilangi.
d = datetime.date(2018, 2, 1)
print(d)
# 2018-02-01
print(d.month)
# 2
obyek wektu
Objek wektu yaiku obyek sing ngemot informasi babagan wektu (jam, menit, detik, lan mikrodetik). Bisa diakses nggunakake atribut jam, menit, detik, lan mikrodetik.
Konstruktor kanggo obyek wektu
Konstruktor obyek wektu kaya ing ngisor iki.
time(hour=0, minute=0, second=0, microsecond=0, tzinfo=None)
Kabeh mau opsional, lan yen diilangi, disetel dadi 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
obyek timedelta
Objek timedelta minangka obyek sing nuduhake prabédan wektu antarane rong tanggal lan wektu, utawa wektu sing wis liwati. Nduwe informasi ing dina, detik, lan mikrodetik, lan bisa diakses kanthi atribut dina, detik, lan mikrodetik. Sampeyan uga bisa kanggo njaluk nomer total detik nggunakake total_seconds () cara.
Ngurangi obyek datetime lan tanggal kanggo nggawe obyek timedelta.
Ngurangi obyek datetime saka saben liyane ngasilake obyek 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
Pengurangan obyek tanggal saka saben liyane uga ngasilake obyek timedelta.
Konstruktor kanggo obyek timedelta
Konstruktor obyek timedelta minangka nderek
timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
Kabeh mau opsional, lan yen diilangi, disetel dadi 0.
Elinga yen obyek timedelta mung ngemot informasi ing ngisor iki.
- sawetara dina:
days
- nomer detik:
seconds
- jumlah mikrodetik:
microseconds
Contone, loro ing ngisor iki padha
weeks=1
days=7
td_1w = datetime.timedelta(weeks=1)
print(td_1w)
# 7 days, 0:00:00
print(td_1w.days)
# 7
Subtraction lan tambahan nggunakake obyek timedelta
Obyek timedelta bisa digunakake karo obyek datetime lan tanggal kanggo nindakake operasi kayata subtraction lan tambahan. Contone, sampeyan bisa kanthi gampang ngetung lan entuk tanggal seminggu kepungkur utawa 10 dina saka saiki, utawa wektu 50 menit saka saiki.
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
Uga bisa digunakake kanggo ngetung jumlah dina nganti tanggal tartamtu.
d_target = datetime.date(2020, 7, 24)
td = d_target - d_today
print(td)
# 903 days, 0:00:00
print(td.days)
# 903
strftime():Konversi saka tanggal lan wektu kanggo senar
Metode strftime () datetime lan obyek tanggal bisa digunakake kanggo ngowahi informasi tanggal lan wektu (tanggal lan wektu) dadi senar ing format format apa wae.
kode format
Deleng dokumentasi resmi ing ngisor iki kanggo kode format sing kasedhiya.
Kode format utama kapacak ing ngisor iki.
%d
:Dina sasi ing notasi desimal kanthi nol diisi.%m
:Wulan ing notasi desimal kanthi nol diisi.%y
:Rong digit pungkasan taun ing notasi desimal sing diisi nol.%Y
:Sekawan digit taun ing notasi desimal kanthi nol diisi.%H
:Yen ditulis ing notasi desimal kanthi nol diisi (notasi 24 jam)%I
:Yen ditulis ing notasi desimal kanthi nol diisi (notasi 12 jam)%M
:Kanggo notasi desimal kanthi nol diisi.%S
:Detik ing notasi desimal kanthi nol diisi.%f
:Microseconds (6 digit) ing notasi desimal kanthi 0 diisi.%A
:Jeneng dina minggu kanggo lokal%a
:Jeneng dina kanggo lokal (wangun singkatan)%B
:Jeneng sasi lokal%b
:Jeneng sasi lokal (bentuk singkatan)%j
:Dina taun ing notasi desimal kanthi nol isi.%U
:Nomer minggu taun ing notasi desimal kanthi nol isi (minggu diwiwiti dina Minggu)%W
:Nomer minggu taun ing notasi desimal kanthi nol isi (minggu diwiwiti dina Senin)
Kode format ing ngisor iki kanggo jeneng dina lan sasi bisa dipikolehi ing senar sing beda-beda gumantung saka lokal.
%A
%a
%B
%b
Ana uga cara khusus kanggo string format ISO 8601.
Kode Sampel
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
Yen sampeyan pengin njaluk nomer tinimbang senar, mung Ngonversi menyang integer karo int ().
week_num_mon = int(d_today.strftime('%W'))
print(week_num_mon)
print(type(week_num_mon))
# 5
# <class 'int'>
Ing kombinasi karo obyek timedelta, iku gampang kanggo nggawe, contone, dhaptar tanggal saben rong minggu ing format sembarang.
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
Nggunakake notasi pangerten dhaptar luwih pinter.
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']
- Artikel sing gegandhengan:Nggunakake notasi pangerten dhaptar Python
strptime():Konversi saka string menyang tanggal lan wektu
datetime strptime () bisa digunakake kanggo nggawe obyek datetime saka string tanggal utawa wektu. Sampeyan kudu nemtokake string format sing cocog karo string asli.
Ana uga cara khusus kanggo senar ISO 8601 (Python 3.7 utawa luwih anyar).
Kode Sampel
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'>
Kanthi nggunakake cara strftime () ing obyek datetime dijupuk, sampeyan bisa makili tanggal lan wektu ing format beda saka senar asli.
print(date_dt.strftime('%Y-%m-%d %H:%M'))
# 2018-02-01 12:30
Yen sampeyan ngowahi menyang obyek datetime, sampeyan uga bisa nindakake operasi karo obyek timedelta, contone, sampeyan bisa generate senar tanggal 10 days ago ing format padha.
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