Gunakan strtotime()
pada kencan pertama Anda lalu date('Y-m-d')
untuk mengubahnya kembali:
$time = strtotime('10/16/2003');
$newformat = date('Y-m-d',$time);
echo $newformat;
// 2003-10-16
Perhatikan bahwa ada perbedaan antara menggunakan garis miring /
dan tanda hubung -
dalam strtotime()
fungsi. Mengutip dari php.net:
Tanggal dalam format m / d / y atau dmy tidak jelas dengan melihat pemisah antara berbagai komponen: jika pemisah adalah garis miring (/), maka m / d / y Amerika diasumsikan; sedangkan jika pemisah adalah tanda hubung (-) atau titik (.), maka format dmy Eropa diasumsikan.
Untuk menghindari kemungkinan ambiguitas, sebaiknya gunakan tanggal ISO 8601 (YYYY-MM-DD) atau DateTime :: createFromFormat () jika memungkinkan.
strtotime
menerima format tertentu. Anda tidak bisa memberinya makan apa pun. Itu sebabnyaDateTime::createFromFormat
harus digunakanstrtotime
. Sayangnya, jawaban ini memiliki terlalu banyak upvotes untuk diperhatikan siapa pun. Ini semua salin tempel hari ini.Anda harus berhati-hati dengan format m / d / Y dan mdY. PHP menganggap
/
berarti m / d / Y dan-
berarti dmY. Saya akan secara eksplisit menggambarkan format input dalam kasus ini:Dengan begitu Anda tidak pada tingkah interpretasi tertentu.
sumber
strtotime()
fungsi.Untuk mengurai tanggal, Anda harus menggunakan: DateTime :: createFromFormat ();
Ex:
Namun, hati-hati, karena ini akan macet dengan:
Anda sebenarnya perlu memeriksa bahwa pemformatan berjalan baik, pertama:
Sekarang alih-alih menabrak, Anda akan mendapatkan pengecualian, yang dapat Anda tangkap, sebarkan, dll.
$ dateDE memiliki format yang salah, seharusnya "16.10.2013";
sumber
Sunting: Anda juga dapat meneruskan konstruktor DateTimeZone ke DateTime () untuk memastikan pembuatan tanggal untuk zona waktu yang diinginkan, bukan yang default server.
sumber
Untuk kencan pertama
Untuk Tanggal Baru
sumber
Jika Anda memiliki format dd-mm-yyyy maka dalam PHP itu tidak akan berfungsi seperti yang diharapkan. Dalam dokumen PHP mereka memiliki pedoman di bawah ini.
Jadi, Anda tidak bisa menggunakan sesuai keinginan. Ketika Anda mencoba menggunakan format dd / mm / yyyy dengan ini maka itu akan menghapus SALAH. Anda dapat mengubah dengan yang berikut ini.
sumber
Seperti kita memiliki tanggal "07 / Mei / 2018" dan kita perlu tanggal "2018-05-07" sebagai kompatibel dengan mysql
Ini bekerja untuk saya. Nikmati :)
sumber
Karena tidak ada yang menyebutkan ini, berikut ini cara lain:
$date = date_create_from_format("m-d-Y", "10-16-2003")->format("Y-m-d");
sumber
Jika Anda ingin menerima tanggal menggunakan pemesanan Amerika (bulan, tanggal, tahun) untuk format gaya Eropa (menggunakan tanda hubung atau periode sebagai hari, bulan, tahun) sambil tetap menerima format lain , Anda dapat memperluas kelas DateTime:
Atau, Anda dapat membuat fungsi untuk menerima mdY dan output Ymd:
sumber
untuk membuat tanggal dari string apa pun, gunakan:
$ date = DateTime :: createFromFormat ('dmy H: i', '01 -01-01 01:00 '); echo $ date-> format ('Ymd H: i');
sumber