mktime()
PHP memiliki sejumlah fungsi yang memudahkan pengolahan tanggal dan waktu.
Salah satunya adalah mktime()
, yang memungkinkan kita membuat
Unix Timestamp dengan menentukan secara spesifik nilai tahun, bulan, hari, jam, menit, dan detik.
Artikel ini akan menjelaskan pengertian, sintaks, serta beberapa contoh penggunaan mktime()
dalam berbagai situasi.
1. Fungsi mktime()
pada PHP
Fungsi mktime()
adalah fungsi bawaan PHP yang berfungsi untuk
menghasilkan Unix Timestamp berdasarkan parameter-parameter khusus
seperti jam, menit, detik, bulan, hari, dan tahun.
Nilai yang dikembalikan berbentuk integer, yang merepresentasikan
waktu dalam hitungan detik sejak 1 Januari 1970 (00:00:00 UTC), atau yang dikenal dengan istilah
Unix Epoch.
Dengan memanfaatkan mktime()
, Anda bisa mengontrol pembuatan
tanggal dan waktu secara dinamis, misalnya untuk menghasilkan timestamp
di masa lalu atau masa depan sesuai kebutuhan.
2. Sintaks Dasar
int mktime(
int $hour,
int $minute,
int $second,
int $month,
int $day,
int $year
);
- $hour: Jam (0-23).
- $minute: Menit (0-59).
- $second: Detik (0-59).
- $month: Bulan (1-12).
- $day: Tanggal (1-31).
- $year: Tahun (4 digit, misalnya 2025).
Nilai yang dihasilkan adalah Unix Timestamp dengan zona waktu UTC.
Namun, hasil tersebut dapat ditampilkan sesuai zona waktu lokal Anda
ketika dikombinasikan dengan fungsi date()
atau gmdate()
.
3. Penjelasan Lengkap dan Perilaku mktime()
mktime()
memungkinkan Anda membuat tanggal dan waktu tertentu
dengan mudah. Nilai yang diberikan untuk tahun, bulan, dan hari
dapat melebihi rentang normal, dan PHP akan melakukan penyesuaian secara otomatis.
Contoh: Jika Anda memasukkan mktime(0, 0, 0, 13, 1, 2025)
,
PHP akan menganggap bulan ke-13 adalah Januari tahun berikutnya,
sehingga hasilnya sama dengan mktime(0, 0, 0, 1, 1, 2026)
.
Selain itu, mktime()
juga mempertimbangkan faktor
Daylight Saving Time (DST), tergantung pada pengaturan zona waktu server.
Jika terjadi pergeseran waktu satu jam saat DST aktif, hasil mktime()
bisa saja tidak selaras dengan perkiraan manual.
Oleh karena itu, penting untuk menyesuaikan time zone dengan kebutuhan aplikasi.
4. Contoh Penggunaan mktime()
pada Berbagai Kasus
4.1. Membuat Tanggal Spesifik
<?php
// Misal: Membuat timestamp untuk 25 Desember 2025, pukul 00:00:00
$timestamp = mktime(0, 0, 0, 12, 25, 2025);
echo "Timestamp: " . $timestamp . "<br>";
// Menampilkan dalam format terbaca
date_default_timezone_set("Asia/Jakarta");
echo "Tanggal: " . date("Y-m-d H:i:s", $timestamp);
?>
Pada contoh ini, mktime()
digunakan untuk
menghasilkan timestamp tepat pada tanggal 25 Desember 2025.
Kemudian, fungsi date()
menampilkan hasilnya dalam format
Y-m-d H:i:s
sesuai zona waktu Asia/Jakarta
.
4.2. Menangani Tanggal dengan Penyesuaian Otomatis
<?php
// Bulan ke-13, akan disesuaikan oleh PHP
$timestampAdjustment = mktime(0, 0, 0, 13, 1, 2025);
echo "Timestamp penyesuaian: " . $timestampAdjustment . "<br>";
echo "Tanggal dengan penyesuaian: " . date("Y-m-d", $timestampAdjustment);
?>
PHP akan otomatis mengkalkulasi bulan ke-13 sebagai bulan Januari di tahun berikutnya (2026).
4.3. Menghitung Selisih Waktu Tertentu
Anda bisa menggunakan mktime()
untuk membandingkan dua rentang waktu dengan lebih jelas.
Misalnya, menghitung perbedaan antara tanggal saat ini dengan tanggal tertentu di masa depan atau masa lalu.
<?php
// Tanggal yang akan dituju: 1 Juli 2026
$targetTimestamp = mktime(0, 0, 0, 7, 1, 2026);
$now = time();
$selisih = $targetTimestamp - $now; // dalam detik
$hari = floor($selisih / (60 * 60 * 24));
echo "Masih ada {$hari} hari hingga 1 Juli 2026.";
?>
Pada contoh ini, kita menghitung selisih (dalam hari) antara waktu saat ini dengan tanggal 1 Juli 2026.
4.4. Menentukan Tanggal Kadaluarsa (Expiry)
Fungsi mktime()
juga dapat diaplikasikan untuk membuat
tanggal dan waktu kadaluarsa (expiry) dengan menambah atau mengurangi
tahun, bulan, atau hari.
<?php
// Membuat tanggal kadaluarsa 30 hari dari tanggal 1 Januari 2026
$expiry = mktime(0, 0, 0, 1, 1+30, 2026);
echo "Tanggal kadaluarsa: " . date("Y-m-d", $expiry);
?>
Pada contoh di atas, kita menambahkan 30 hari setelah 1 Januari 2026. PHP secara otomatis menyesuaikan jika hari atau bulan melewati batas normal.
4.5. Membuat Hitungan Mundur (Countdown)
<?php
$eventTimestamp = mktime(23, 59, 59, 12, 31, 2025);
$now = time();
$selisih = $eventTimestamp - $now;
$hari = floor($selisih / (60 * 60 * 24));
$jam = floor(($selisih % (60 * 60 * 24)) / (60 * 60));
$menit = floor(($selisih % (60 * 60)) / 60);
$detik = $selisih % 60;
echo "Hitungan mundur hingga 31 Des 2025, 23:59:59: ";
echo "{$hari} hari, {$jam} jam, {$menit} menit, {$detik} detik.";
?>
Pada contoh ini, kita membuat countdown ke tanggal 31 Desember 2025,
pukul 23:59:59 dengan menggunakan hasil dari mktime()
.
5. Tips dan Trik
- Perhatikan Zona Waktu:
mktime()
menghasilkan timestamp berbasis UTC, tetapi hasilnya dapat terlihat berbeda saat dikonversi dengandate()
tergantung time zone yang Anda atur. - Gunakan
checkdate()
untuk Validasi: Jika Anda menerima input tanggal dari pengguna, pertimbangkan untuk menggunakancheckdate()
sebelum memanggilmktime()
agar memastikan tanggal valid. - Simpan Data Timestamp di Database: Banyak pengembang yang lebih nyaman menyimpan data waktu dalam bentuk timestamp karena lebih mudah diolah, dibandingkan menyimpan format teks "YYYY-MM-DD HH:ii:ss". Pilih strategi yang sesuai dengan kebutuhan Anda.
- Penanganan DST (Daylight Saving Time):
Jika aplikasi Anda mendukung DST secara global, gunakan pendekatan berbasis
DateTime
untuk penyesuaian lebih presisi.
6. Ringkasan
Fungsi mktime()
di PHP merupakan alat penting untuk menghasilkan
Unix Timestamp berdasarkan parameter tahun, bulan, hari, jam, menit, dan detik yang ditentukan.
Dengan fleksibilitas dalam mengatur nilai-nilai tersebut, Anda bisa membangun logika penanganan waktu
yang lebih leluasa—mulai dari menghitung selisih tanggal, penjadwalan, menentukan expiry,
sampai fitur countdown.
Semoga penjelasan dan contoh di atas dapat membantu Anda memahami
dan memanfaatkan mktime()
dengan lebih baik.
Terus eksplorasi fitur ini dan kombinasikan dengan fungsi-fungsi waktu lainnya di PHP
untuk membangun aplikasi yang handal dalam menangani tanggal dan waktu.
Baca Juga :