Date & Time #
Pendahuluan #
PHP menyediakan kelas DateTime
dan DateTimeImmutable
untuk bekerja dengan tanggal dan waktu. Kelas ini menawarkan berbagai metode untuk memanipulasi dan memformat tanggal dan waktu. Kelas DateTime
memungkinkan modifikasi objek yang ada, sedangkan DateTimeImmutable
menciptakan objek baru setiap kali ada perubahan.
Membuat Objek DateTime #
Membuat Objek DateTime Saat Ini #
<?php
$now = new DateTime();
echo $now->format('Y-m-d H:i:s'); // Output: Tanggal dan waktu saat ini, misalnya: 2023-07-25 15:45:00
?>
Membuat Objek DateTime dari String #
<?php
$date = new DateTime('2023-01-01');
echo $date->format('Y-m-d'); // Output: 2023-01-01
?>
Membuat Objek DateTime dengan Format Khusus #
<?php
$date = DateTime::createFromFormat('d/m/Y', '25/12/2023');
echo $date->format('Y-m-d'); // Output: 2023-12-25
?>
Memanipulasi Objek DateTime #
Menambahkan Waktu #
<?php
$date = new DateTime('2023-01-01');
$date->add(new DateInterval('P1D')); // Menambahkan 1 hari
echo $date->format('Y-m-d'); // Output: 2023-01-02
?>
Mengurangi Waktu #
<?php
$date = new DateTime('2023-01-01');
$date->sub(new DateInterval('P1D')); // Mengurangi 1 hari
echo $date->format('Y-m-d'); // Output: 2022-12-31
?>
Mengatur Waktu #
<?php
$date = new DateTime('2023-01-01');
$date->setDate(2022, 12, 31); // Mengatur tanggal menjadi 31 Desember 2022
echo $date->format('Y-m-d'); // Output: 2022-12-31
?>
Mengatur Waktu dengan Format Khusus #
<?php
$date = new DateTime('2023-01-01 00:00:00');
$date->setTime(10, 30, 45); // Mengatur waktu menjadi 10:30:45
echo $date->format('Y-m-d H:i:s'); // Output: 2023-01-01 10:30:45
?>
Menghitung Selisih Antara Dua Tanggal #
Menggunakan DateInterval:
<?php
$date1 = new DateTime('2023-01-01');
$date2 = new DateTime('2023-01-10');
$interval = $date1->diff($date2);
echo $interval->format('%R%a days'); // Output: +9 days
?>
Menggunakan Timezone #
Mengatur Timezone #
<?php
$date = new DateTime('now', new DateTimeZone('Asia/Jakarta'));
echo $date->format('Y-m-d H:i:s'); // Output: Tanggal dan waktu saat ini di timezone Asia/Jakarta
?>
Mengubah Timezone #
<?php
$date = new DateTime('now', new DateTimeZone('UTC'));
$date->setTimezone(new DateTimeZone('Asia/Jakarta'));
echo $date->format('Y-m-d H:i:s'); // Output: Tanggal dan waktu saat ini di timezone Asia/Jakarta
?>
Menggunakan Objek DateTimeImmutable #
Membuat Objek DateTimeImmutable:
<?php
$date = new DateTimeImmutable('2023-01-01');
$newDate = $date->add(new DateInterval('P1D')); // Menambahkan 1 hari
echo $newDate->format('Y-m-d'); // Output: 2023-01-02
echo $date->format('Y-m-d'); // Output: 2023-01-01, $date tidak berubah
?>
Contoh Penggunaan #
Menampilkan Waktu Saat Ini dalam Berbagai Format:
<?php
$now = new DateTime();
echo "Tanggal dan waktu saat ini: " . $now->format('Y-m-d H:i:s') . "<br>";
echo "Tanggal: " . $now->format('d/m/Y') . "<br>";
echo "Waktu: " . $now->format('H:i:s') . "<br>";
?>
Menghitung Umur dari Tanggal Lahir:
<?php
$tanggalLahir = new DateTime('1990-01-01');
$sekarang = new DateTime();
$umur = $sekarang->diff($tanggalLahir);
echo "Umur: " . $umur->y . " tahun, " . $umur->m . " bulan, " . $umur->d . " hari.";
?>
Mengonversi Tanggal dari Satu Format ke Format Lain:
<?php
$tanggal = '25/12/2023';
$date = DateTime::createFromFormat('d/m/Y', $tanggal);
echo $date->format('Y-m-d'); // Output: 2023-12-25
?>
Menghitung Hari dalam Seminggu:
<?php
$date = new DateTime('2023-01-01');
echo "Hari dalam seminggu: " . $date->format('l'); // Output: Sunday
?>
Kesimpulan #
Kelas DateTime
dan DateTimeImmutable
dalam PHP sangat berguna untuk bekerja dengan tanggal dan waktu. Mereka menawarkan berbagai metode untuk membuat, memanipulasi, memformat, dan menghitung perbedaan antara tanggal. Dengan memahami cara menggunakan kelas ini, Anda dapat menangani operasi terkait tanggal dan waktu dalam aplikasi PHP Anda dengan lebih efektif dan efisien.