Python Bekerja dengan time stamp untuk mempermudah transaksi

By | January 14, 2021
2,787 Views

Bila kalian sedang bekerja dengan basis data yang melibatkan tanggal, maka akan banyak sekali format tanggal yang beredar seperti berikut

  1. 11-Feb-13
  2. 4/30/13
  3. 4/30/2013
  4. 04/30/2013
  5. 04/02/2013

Atau format indonesia yaitu

  1. 31/03/2020
  2. 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

  1. Berapa jumlah hari dari 1 januari 2020 sampai dengan 9 juni 2020?
  2. 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

  1. 2020-06-09 maka format yaitu %Y-%m-%d
  2. 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??