Operasi Tambah dan Kurang Tanggal di PHP

Jul 10, 2022 by Ellyx Christian Level: Mahir Komentar Print

Tanggal dan kalendar merupakan hal yang cukup sulit untuk dihitung dalam pemrograman. Sebagai contoh jika tanggal 27 Februari ditambah dengan 2 hari maka hasilnya adalah tanggal 1 maret bukan tanggal 29 Februari, kecuali untuk tahun kabisat. Operasi tambah dan kurang matematika dasar tidak bisa digunakan dalam menghitung tanggal. Ada variable variable lain yang perlu diperhitungkan, seperti jumlah hari untuk tiap bulan, apakah tahun kabisat atau tidak. Untungnya PHP memiliki class DateTime yang bisa digunakan untuk menambah dan mengurangi tanggal.

Video Tutorial Tambah dan Kurang Tanggal di PHP

Video Tutorial Tambah dan Kurang Tanggal di PHP

Menambah Tanggal di PHP

Untuk menambah tanggal kita perlu membuat object DateTime terlebih dahulu. Class DateTime menerima masukan string tanggal dalam format tertentu. Paling umum adalah menggunakan format ISO yaitu Y-m-d, jika dengan waktu Y-m-dTH:i:s. Contoh 2022-02-27 atau 2022-02-27T10:01:50. Untuk membuat object DateTime gunakan kata kunci new seperti.

$tanggal = new DateTime('2022-02-27');
$tanggal = new DateTime('2022-02-27T10:01:50');

Sedangkan untuk menambah tanggal kita menggunakan fungsi add yang menerima input object DateInterval. Untuk membuat object DateInterval kita kembali menggunakan kata kunci new. Dimana class DateInterval menerima masukan string durasi, dengan format sebagai berikut. Selalu diawali dengan P diikuti dengan angka (integer) dan penujuk periode, jika periode berisi waktu di depannya harus ditambah dengan T. Di bawah adalah tabel penunjuk periode.

Penunjuk Periode Keterangan
Y Tahun
M bulan
D hari
W minggu, sebelum php 8 tidak bisa digabungkan dengan D
H jam
M menit
S detik

Berikut contoh sederhana P2D artinya 2 hari, P2M3D dua bulan 3 hari, P2DT2H2M dua hari dan 2 jam 2 menit. Format ini adalah berdasarkan ISO 8601.

Di bawah adalah beberapa contoh operasi tambah tanggal di php

// Tambah 2 hari
$tanggal = new DateTime('2022-02-27');
$tanggal->add(new DateInterval('P2D');
echo $tanggal->format('d-m-Y'); // hasilnya: 01-03-2022

// Tambah 1 bulan
$tanggal = new DateTime('2022-02-27');
$tanggal->add(new DateInterval('P2M');
echo $tanggal->format('d-m-Y'); // hasilnya: 27-03-2022

// Tambah 2 hari 2 jam
$tanggal = new DateTime('2022-02-27T10:05:10');
$tanggal->add(new DateInterval('P2DT2H');
echo $tanggal->format('d-m-Y H:i:s'); // hasilnya: 01-03-2022 12:05:10

Operasi Kurang Tanggal di PHP

Sama seperti operasi tambah, operasi kurang menggunakan fungsi sub yang sama sama menerima input DateInterval. Di bawah adalah beberapa contoh operasi kurang tanggal.

// Kurang 2 hari
$tanggal = new DateTime('2022-02-27');
$tanggal->sub(new DateInterval('P2D');
echo $tanggal->format('d-m-Y'); // hasilnya: 25-02-2022

// Kurang 1 bulan
$tanggal = new DateTime('2022-02-27');
$tanggal->add(new DateInterval('P2M');
echo $tanggal->format('d-m-Y'); // hasilnya: 27-01-2022

// Kurang 2 hari 2 jam
$tanggal = new DateTime('2022-02-27T10:05:10');
$tanggal->add(new DateInterval('P2DT2H');
echo $tanggal->format('d-m-Y H:i:s'); // hasilnya: 25-02-2022 08:05:10

Menggunakan Class DateTimeImmutable

Class DateTimeImmutable memiliki fungsionalitas yang sama seperti DateTime tetapi akan mengembalikan object DateTime baru saat di melakukan operasi tambah dan kurang sehingga nilai dari object tanggal awal tidak mengalami perubahan. Berikut adalah contoh penggunaanya dan perbedaannya.

$tanggal = new DateTimeImmutable('2022-02-27');
$tanggal2 = $tanggal->add(new DateInterval('P2D');
echo $tanggal2->format('d-m-Y'); // hasilnya: 01-03-2022
echo $tanggal->format('d-m-Y'); // nilainya tetap tidak berubah 27-02-2022

Sedangkan menggunakan DateTime

$tanggal = new DateTime('2022-02-27');
$tanggal2 = $tanggal->add(new DateInterval('P2D');
echo $tanggal2->format('d-m-Y'); // hasilnya: 01-03-2022
echo $tanggal->format('d-m-Y'); // nilanya akan berubah menjadi 01-03-2022 juga

Silahkan login atau register sebelum meninggalkan komentar.