Konversi Format Tanggal di PHP : Panduan Basic untuk Developer

Tutorial81 Views

Bekerja dengan tanggal adalah salah satu kebutuhan paling umum dalam pemrograman, terutama ketika kita membangun aplikasi berbasis web. PHP sebagai bahasa server-side menyediakan berbagai fungsi yang fleksibel untuk menangani tanggal. Namun, tidak jarang developer baru merasa bingung saat harus mengubah format tanggal sesuai kebutuhan tampilan, database, atau integrasi API. Artikel ini akan membahas secara detail cara konversi format tanggal di PHP, mulai dari fungsi dasar hingga trik lanjutan yang sering dipakai developer.


Memahami Format Tanggal di PHP

Sebelum masuk ke praktik, penting untuk memahami bagaimana PHP merepresentasikan tanggal. PHP menggunakan timestamp UNIX sebagai dasar perhitungan waktu, yaitu angka integer yang merepresentasikan detik sejak 1 Januari 1970 (Epoch time). Dengan timestamp ini, PHP bisa melakukan manipulasi waktu secara universal tanpa terikat zona waktu tertentu.

Namun, pengguna akhir jarang ingin melihat angka panjang timestamp. Biasanya, mereka lebih membutuhkan format tanggal yang manusiawi seperti 19-09-2025 atau Friday, 19 September 2025. Di sinilah fungsi konversi format tanggal sangat dibutuhkan.


Fungsi date() untuk Konversi Format

Fungsi paling populer untuk menampilkan tanggal dengan format tertentu adalah date(). Fungsi ini memungkinkan developer mengatur format tanggal dengan menggunakan karakter khusus sebagai penanda.

Contoh sederhana:

<?php
echo date("d-m-Y"); 
// Output: 19-09-2025
?>
  • d → hari dengan dua digit (01–31)
  • m → bulan dengan dua digit (01–12)
  • Y → tahun empat digit (misalnya 2025)

Jika ingin menambahkan jam, menit, dan detik, cukup sertakan parameter tambahan:

<?php
echo date("d-m-Y H:i:s"); 
// Output: 19-09-2025 14:32:45
?>

Dengan cara ini, developer bisa dengan mudah menampilkan tanggal sesuai kebutuhan UI.


Fungsi strtotime() untuk Konversi String ke Tanggal

Sering kali data tanggal datang dalam bentuk string acak, seperti "next Monday", "2025-09-19", atau bahkan "yesterday". Untuk mengubah string tersebut menjadi timestamp yang bisa diproses lebih lanjut, PHP menyediakan fungsi strtotime().

Contoh:

<?php
$timestamp = strtotime("2025-09-19");
echo date("d/m/Y", $timestamp);
// Output: 19/09/2025
?>

Keunggulan strtotime() adalah fleksibilitasnya. Kita bisa menggunakannya dengan berbagai variasi string:

<?php
echo date("d-m-Y", strtotime("next Monday"));
echo date("d-m-Y", strtotime("yesterday"));
echo date("d-m-Y", strtotime("+1 week"));
?>

Hasil ini sangat berguna ketika kita ingin melakukan konversi atau perhitungan tanggal secara dinamis.

Kombinasi Tanggal & Jam

Selain hari, kita bisa langsung menentukan jam.

<?php
echo date("d-m-Y H:i:s", strtotime("today 08:00"));  
// Output: 19-09-2025 08:00:00

echo date("d-m-Y H:i:s", strtotime("tomorrow 23:59"));  
// Output: 20-09-2025 23:59:00

echo date("d-m-Y H:i:s", strtotime("next Friday 18:30"));  
// Output: 26-09-2025 18:30:00
?>

Contoh ini cocok untuk sistem reservasi atau reminder yang melibatkan waktu detail.


Menggunakan DateTime untuk Fleksibilitas Lebih

Meskipun date() dan strtotime() cukup populer, PHP modern mendorong penggunaan kelas DateTime karena lebih fleksibel dan berorientasi objek. DateTime tidak hanya mampu memformat tanggal, tetapi juga melakukan manipulasi yang kompleks.

Contoh penggunaan dasar:

<?php
$date = new DateTime("2025-09-19");
echo $date->format("d-m-Y"); 
// Output: 19-09-2025
?>

Untuk menambahkan interval tanggal:

<?php
$date = new DateTime("2025-09-19");
$date->modify("+10 days");
echo $date->format("d-m-Y"); 
// Output: 29-09-2025
?>

Kelas DateTime juga bisa dipadukan dengan DateInterval untuk kebutuhan lebih spesifik, misalnya menambah 2 bulan atau 1 tahun.


Konversi Format Tanggal dari Database

Dalam dunia nyata, kita sering berhadapan dengan data tanggal dari database, terutama MySQL yang biasanya menyimpan tanggal dalam format YYYY-MM-DD. Agar tampil lebih ramah pengguna, format ini perlu diubah.

Contoh konversi sederhana:

<?php
$tanggal_db = "2025-09-19";
echo date("d-m-Y", strtotime($tanggal_db));
// Output: 19-09-2025
?>

Dengan DateTime:

<?php
$tanggal_db = "2025-09-19";
$date = new DateTime($tanggal_db);
echo $date->format("d M Y");
// Output: 19 Sep 2025
?>

Hal ini membuat tampilan data lebih enak dibaca, terutama untuk laporan atau halaman antarmuka pengguna.


Format Lokal dengan setlocale() dan strftime()

Jika aplikasi Anda membutuhkan tampilan tanggal sesuai bahasa lokal, misalnya menampilkan bulan dalam Bahasa Indonesia, maka fungsi setlocale() dan strftime() bisa digunakan.

Contoh:

<?php
setlocale(LC_TIME, 'id_ID.utf8');
echo strftime("%A, %d %B %Y", strtotime("2025-09-19"));
// Output: Jumat, 19 September 2025
?>

Namun, perlu diperhatikan bahwa strftime() sudah deprecated di PHP 8.1. Untuk aplikasi modern, lebih baik menggunakan IntlDateFormatter.


Konversi dengan IntlDateFormatter untuk Aplikasi Multibahasa

Ketika membangun aplikasi internasional, kita membutuhkan format tanggal yang otomatis menyesuaikan dengan bahasa pengguna. PHP menyediakan IntlDateFormatter melalui ekstensi intl.

Contoh penggunaan:

<?php
$formatter = new IntlDateFormatter('id_ID', IntlDateFormatter::FULL, IntlDateFormatter::NONE);
echo $formatter->format(new DateTime("2025-09-19"));
// Output: Jumat, 19 September 2025
?>

Dengan cara ini, kita tidak perlu lagi manual menyesuaikan nama bulan atau hari ke berbagai bahasa. Cukup tentukan locale, maka format akan mengikuti.


Tips Praktis dalam Konversi Format Tanggal

Dalam praktik sehari-hari, ada beberapa tips yang bisa mempermudah pekerjaan developer:

  1. Gunakan DateTime untuk kode modern – lebih fleksibel dibanding date() dan mudah diperluas.
  2. Selalu pertimbangkan timezone – gunakan date_default_timezone_set() untuk menghindari hasil yang berbeda di server.
  3. Simpan tanggal di database dalam format standar (UTC) – lalu konversi sesuai kebutuhan tampilan.
  4. Gunakan IntlDateFormatter untuk aplikasi global – sangat membantu ketika aplikasi Anda mendukung multi-bahasa.
  5. Kombinasikan strtotime() untuk parsing string dinamis – berguna ketika menerima input tanggal yang tidak baku.

Leave a Reply

Your email address will not be published. Required fields are marked *