Bermain Dengan Tanggal Pada Java

Programming
blog post

Bahasa pemograman apapun yang di gunakan dalam pengembangan suatu aplikasi baik itu PHP, Java, Python, dll sering kali kita akan di hadapkan untuk pengolahan Tanggal dan Waktu. Namun pada kesempatan kali ini kita akan membahas perbandingan tanggal pada bahasa pemograman Java.

Baiklah langsung saja, kita akan membuat 2 buah contoh kasus :

  1. Tanggal A berada di antara tanggal B dan C
  2. Tanggal A sama dengan tanggal B atau C

 Tanggal A berada di antara tanggal B dan C

Anggap saja kita akan membuat suatu fitur Apply Voucher, dimana Voucher tersebut memiliki masa aktif yang hanya bisa di gunakan pada periode tertentu. Pada kasus ini kita akan dihadapkan dengan 3 buah tanggal yaitu : 

A = Tanggal Reedem , 
B = Tanggal Awal Aktif Voucher, 
C = Tanggal Terakhir Aktif Voucher

Tentu saja pada saat pengguna ingin melakukan Redeem Voucher, terlebih dahulu kita akan melakukan pengecekan apakah Voucher tsb masih aktif atau tidak, bagaimana caranya ? Silahkan perhatikan potongan kode di bawah ini 

import java.util.*;
import java.text.*;

public class DateDemo {

    public static void main(String[] args) throws ParseException {

        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
        
        Date now       = new Date(); // Tanggal Hari ini 
        String from    = "01/01/2020";
        String to      = "31/01/2020";
        
        String A   = sdf.format(now); // Tanggal Hari ini 
        Date B     = sdf.parse(from); // Tanggal Awal Voucher Aktif
        Date C     = sdf.parse(to); // Tanggal Terakhir Voucher Aktif


        if ((now.after(B) && (now.before(C))) || (A.equals(from) || A.equals(to))) {
            System.out.println("Voucher Aktif");
        } else {
            System.out.println("Voucher Sudah Kadaluarsa");
        }
    
    }
 
}

Pada contoh diatas bisa dilihat ada 3 fungsi ( after, before, dan equals ) yang di gunakan untuk melakukan pengecekan, berikut ini adalah penjelasan masing-masing fungsi tsb :

now.after(B) // Cek jika tgl sekarang > B (Tanggal Awal Voucher Aktif) 
now.before(C) // Cek jika tgl sekarang < C (Tanggal Akhir Voucher Aktif) 
now.after(B) && (now.before(C)) // Jadi, jika tanggal hari ini ( > ) "01/01/2020" dan ( < ) "31/01/2020", berarti Voucher masih aktif

Dari penjelasan di atas kita sudah bisa melakukan validasi apakah tgl rendeem voucher lebih besar dari  ( > ) "01/01/2020" dan lebih kecil dari ( < ) "31/01/2020", artinya Voucher tsb akan di nyatakan valid jika di gunakan antara tgl  02 - 30 Jan 2020.

Namun bagaimana jika di gunakan pada tgl "01/01/2020" atau "31/01/2020" , disinilah kita menggunakan fungsi equals . 

A.equals(from) || A.equals(to) // Berfungsi utk melakukan pengecekan apakah tgl rendeem sama dg tgl awal atau sama dengan tgl akhir. 

Jadi fungsi if pada kode di atas akan menghasilkan output "Voucher Aktif" apabila voucher digunakan antara tgl "02 - 30 /01/2020" atau digunakan pd tgl "01/01/2020" atau "31/01/2020".

 

Tanggal A sama dengan tanggal B atau C

Pada contoh kasus ke dua ini kita akan mencari apabila Tanggal A sama dengan tanggal B atau C , namun kali ini kita tidak akan menggunakan fungsi equals seperti contoh kasus sebelumnya.

 

  • Share