
Bila kalian sedang bekerja dengan basis data yang melibatkan tanggal, maka akan banyak sekali format tanggal yang beredar seperti berikut
- 11-Feb-13
- 4/30/13
- 4/30/2013
- 04/30/2013
- 04/02/2013
Atau format indonesia yaitu
- 31/03/2020
- 1/3/2018
Bila kita hanya menggunakan data diatas sebagai format string saja, maka akan sangat sudah melakukan query data, misalkan saja menghitung jumlah hari pada rentang waktu tertentu
- Berapa jumlah hari dari 1 januari 2020 sampai dengan 9 juni 2020?
- getMonth(), getDay(), getYear() pada suatu format tanggal
Mengubah string menjadi date time – timestamp
Untuk mendapatkan sebuah operasi diatas, maka format string harus diubah dulu menjadi format date time. Misalkan saja menggunakan format data berikut
- 2020-06-09 maka format yaitu %Y-%m-%d
- 01-Jun-20 maka format yaitu %d-%b-%y
Kalian harus belajar mengenai regex, lebih lengkapnya bisa melihat tabel berikut
Contoh penggunaan
Kalian bisa coba kode berikut yang menggunakan format yang berbeda dengan input berupa string yaitu untuk menghitung jumlah hari, berapa jumlah hari antar 2020-06-09 sampai dengan 01-Juni-20 (sengaja dibuat format yang berbeda agar mudah buat kalian pelajari)
from datetime import datetime inputdate='2020-06-09' NOW = datetime.strptime(inputdate, "%Y-%m-%d") tanggal = '01-Jun-20' transaksi = datetime.strptime(tanggal,'%d-%b-%y') hari = (NOW-transaksi).days #hitung hari print(hari)
hasil
8
Bagaimana dengan Data Frame Pandas?
Seleksi Tanggal
Contoh lainnya yaitu untuk seleksi tanggal seperti menggunakan operator >=; <= dan yang lainnya menjadi lebih mudah. Apalagi kalau bekerja dengan Data Frame cukup menggunakan perintah pd.to_datetime(tanggal, format=’%Y-%m-%d’)
from datetime import datetime import pandas as pd a = ['2020-06-01','2020-06-02','2020-06-03','2020-06-04'] b = pd.DataFrame({'tanggal':a}) #ubah menjadi dataframe #akan diubah menjadi format tanggal b['tanggal'] = pd.to_datetime(b['tanggal'], format='%Y-%m-%d') #kita akan coba untuk seleksi data start_date = datetime.strptime('2020-06-03', '%Y-%m-%d') #kita hanya ingin seleksi diatas tanggal 3 mask = (b['tanggal']>=start_date) c = b[mask] print(b) print(c)
hasil
tanggal 0 2020-06-01 1 2020-06-02 2 2020-06-03 3 2020-06-04 tanggal 2 2020-06-03 3 2020-06-04
Bila kalian cek b['tanggal'][1]
maka akan menghasilkan type data TimeStamp Timestamp('2020-06-02 00:00:00')
sehingga kita bisa mendapatkan informasi seperti day, month, dan year
print(b['tanggal'][1]) #menampilkan isi seluruh tanggal b['tanggal'][1].day #hanya tampilkan tanggal
hasilnya
2020-06-02 00:00:00 2
Bagaimana menurut kalian? Sangat mudah bukan??