Saat menggunakan strotime()
Anda perlu memastikan bahwa Anda menggunakan format tanggal waktu yang valid
. Jika tidak strtotime()
akan mengembalikan false
atau memberi Anda nilai yang tidak terduga.
Tanggal yang menggunakan format XX/XX/XXXX diasumsikan dalam format US yang artinya dua digit pertama mewakili bulan, dua digit berikutnya mewakili hari dalam bulan, dan empat digit terakhir mewakili tahun. Ketika tanda hubung digunakan, tanggal diasumsikan dalam format Eropa. Misalnya:
04/18/2017 = April 18, 2017
12/18/2017 = December 18, 2017
18-04-2017 = April 18, 2017
18-12-2017 = December 18, 2017
Jika Anda tidak sengaja mengganti hari dan bulan strtotime()
akan mengembalikan false karena tanggalnya tidak valid.
18/04/2017 // error
18/12/2017 // error
04-18-2018 // error
12-18-2017 // error
Contoh di atas adalah lurus ke depan. Tetapi Anda dapat mengalami masalah ketika tanggalnya bisa ambigu. Misalnya:
04/12/2017 = April 12, 2017
12/04/2017 = December 4, 2017
04-12-2017 = December 4, 2017
12-04-2017 = April 12, 2017
Dalam contoh di atas dengan mengganti hari dan bulan, kami masih mendapatkan tanggal yang valid yang dapat menyebabkan hasil yang tidak terduga di aplikasi Anda. Untuk mengatasi masalah potensial ini, disarankan untuk menggunakan DateTime::createFromFormat()
untuk mengurai tanggal iklan kembalikan DateTime()
objek dari mana Anda dapat mendapatkan Cap Waktu Unix
, ubah tanggal ke format lain
, atau gunakan untuk membandingkan DateTime
lainnya objek.
// Parse US date format
$date1 = DateTime::createFromFormat('m/d/Y', '04/18/2017');
// Get Unix timestamp of 1493581268
$timestamp = $date1->getTimestamp();
// Parse European date format
$date2 = DateTime::createFromFormat('d-m-Y', ''18-04-2017);
// Get MySQL format (ISO-8601) of 2017-04-18
$mysqlDate = $date2->format('Y-m-d');
Lihat juga:
Untuk kasus khusus Anda, kode berikut akan berfungsi:
$date = $date1 = DateTime::createFromFormat('m/d/Y', '20/02/2000');
$D->query = $date->format('Y-m-d'); // 2000-02-20