Lebih
SEKARANG() fungsi dalam PHP
Apakah ada fungsi PHP yang mengembalikan tanggal dan waktu dalam format yang sama seperti MySQL fungsi NOW()
?
Aku tahu bagaimana untuk melakukannya dengan menggunakan date()
, tapi saya meminta jika ada fungsi hanya untuk ini.
Misalnya, untuk kembali:
2009-12-01 00:00:00
459
16
Selain dari:
Lihat di sini untuk lebih jelasnya: http://pl.php.net/manual/en/function.date.php
Dengan versi PHP >= 5.4 DateTime dapat melakukan hal ini:-
Lihat itu bekerja.
Menggunakan fungsi ini:
Jawaban singkat
Baca di bawah untuk jawaban yang panjang.
The mimikri dari MySQL NOW() fungsi dalam PHP
Berikut adalah daftar cara dalam PHP yang meniru MySQL
NOW()
fungsi.Saya berpikir bahwa
date_create()->format('Y-m-d H:i:s')
adalah cara terbaik karena pendekatan ini memungkinkan anda untuk menangani waktu/zona waktu manipulasi lebih mudah daripadadate('Y-m-d H:i:s')
dan bekerja sejak php 5.2.**MySQL NOW() fungsi**
MySQL fungsi
NOW()
memberikan nilai dateTime dalam format ini:'YYYY-MM-DD HH:MM:SS'
. Lihat di sini: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_now.Fakta yang menarik adalah bahwa hal itu's mungkin untuk mendapatkan format datetime dengan menjalankan query ini:
MENUNJUKKAN variabel-VARIABEL SEPERTI 'a%e_format'
, hasilnya bisa menjadi sesuatu seperti ini:Variabel-variabel di sini adalah read-only variabel. Jadi anda bisa't perubahan itu.
Saya kira MySQL
NOW()
fungsi gets it's format daridatetime_format
variabel.date_create()->format() VS date()
Yang menguntungkan-fakta
date_create('sekarang')->format('Y-m-d H:i:s')
atasdate('Y-m-d H:i:s')
adalah:lebih mudah untuk menangani waktu manipulasi
date_create()
menerima relatif format tanggal/waktu (sepertisekarang
,kemarin
atau `+1 hari) lihat tautan ini, contoh:date()
menerima relatif format tanggal/waktu juga, seperti ini:lebih mudah untuk menangani zona waktu
Ketika zona waktu peduli maka penggunaan
date_create()->format()
membuat banyak lebih masuk akal makadate()
karenadate()
menggunakan default zona waktu yang dikonfigurasi diphp.ini
ditanggal.timezone
direktif. Link: http://php.net/manual/en/datetime.configuration.php#ini.date.timezone .Hal ini dimungkinkan untuk mengubah zona waktu saat run-time. Contoh:
date_default_timezone_set('Asia/Tokyo');
.The downside adalah bahwa hal itu akan mempengaruhi semua tanggal/waktu fungsi. Masalah ini doesn't ada jika anda menggunakan
date_create()->format()
dalam kombinasi dengantimezone_open()
.PHP mendukung utama zona waktu. Hal yang lucu adalah bahwa hal itu bahkan mendukung lingkaran Arktik, dan Antartika. Apakah anda pernah mendengar tentang
Longyearbyen
? Jika tidak, maka don't khawatir, tidak aku sampai aku baca resmi dokumentasi PHP.Lihat daftar semua didukung zona waktu: http://php.net/manual/en/timezones.php.
o.o.p.
O. O. P. menggunakan state-penuh dengan benda-Benda. Jadi saya lebih memilih untuk berpikir dengan cara ini:
Kemudian untuk berpikir dengan cara ini:
Oleh karena itu saya akan mengatakan bahwa
date_create()->format()
pendekatan yang lebih mudah dibaca untuk saya makadate()
.date_create() VS new DateTime()
Yang menguntungkan-fakta
date_create()
atasnew DateTime()
adalah:Namespaces
Jika anda bekerja di sebuah namespace dan ingin menginisialisasi DateTime objek dengan kata kunci baru, maka anda harus melakukannya seperti ini:
Tidak ada yang salah dengan hal ini, tapi kelemahan dari hal di atas adalah bahwa orang-orang yang lupa secara sporadis tentang backslash. Dengan menggunakan
date_create()
fungsi constructor anda don't perlu khawatir tentang ruang nama.Contoh date_create()->format()
Saya menggunakan pendekatan ini untuk proyek-proyek saya jika saya harus mengisi sebuah array. Seperti ini:
Coba ini:
Saya sedang mencari jawaban yang sama, dan aku telah datang dengan solusi ini untuk PHP 5.3 atau yang lebih baru:
MySQL fungsi
NOW()
mengembalikan timestamp saat ini. Satu-satunya cara yang saya temukan untuk PHP adalah menggunakan kode berikut.Gunakan
strftime
:%F
adalah sama dengan%Y-%m-%d
.%T
adalah sama dengan%H:%M:%S
.Berikut ini's demo pada ideone.
Satu lagi jawaban yang saya cari mudah untuk menggunakan:
Ini adalah ISO 8601 tanggal (ditambahkan dalam PHP 5) yang menggunakan MySQL
Edit
MySQL 5.7 tidak mengizinkan zona waktu di datetime secara default. Anda dapat menonaktifkan error dengan
SQL_MODE=ALLOW_INVALID_DATES
. Lihat jawabannya di sini untuk rincian lebih lanjut: https://stackoverflow.com/a/35944059/2103434. Tapi itu juga berarti bahwa zona waktu akan hilang saat menyimpan ke database!Secara default MySQL menggunakan sistem's timezone, dan asalkan menggunakan PHP sama timezone anda harus baik-baik saja. Dalam kasus saya, CET / UTC+2.
Itu berarti bahwa jika saya memasukkan
2015-07-27T00:00:00+02:00
ke database, hanya2015-07-27T00:00:00
akan disimpan (tapi itu adalah waktu setempat benar!).Ketika saya load time pada PHP,
ini akan secara otomatis menganggap itu's
+02:00
timezone karena itu's default. Percetakan ini akan benar lagi:Untuk amannya, selalu menggunakan UTC pada server, tentukan di MySQL dan PHP, dan kemudian hanya mengubahnya untuk anda pengguna's lokal ketika menampilkan tanggal:
Atau anda dapat menggunakan
DateTime
konstanta:Berikut ini's daftar mereka:
Untuk debugging saya lebih suka yang lebih pendek meskipun (3v4l.org):
Aku suka solusi diposting oleh user1786647, dan I've diperbarui sedikit untuk mengubah zona waktu untuk argumen fungsi dan menambahkan dukungan opsional untuk melewati baik Unix time atau datetime string digunakan untuk kembali datestamp.
Hal ini juga termasuk cadangan untuk "setTimestamp" untuk pengguna yang menjalankan versi yang lebih rendah dari PHP 5.3:
Anda dapat menggunakan PHP fungsi tanggal dengan format yang benar seperti parameter,
Tidak ada built-in PHP
now()
fungsi, tetapi anda dapat melakukannya dengan menggunakandate()
.Contoh
php fungsi now() { return date('Y-m-d H:i:s'); }
Anda dapat menggunakan
date_default_timezone_set()
jika anda perlu untuk mengubah zona waktu.Jika tidak, anda dapat menggunakan Karbon - sederhana PHP API ekstensi untuk DateTime.
PHP setara adalah
waktu()
: http://php.net/manual/en/function.time.phpAnda dapat menggunakan simplePHP kelas untuk melakukan hal ini:
Kelas ini juga menyediakan banyak metode yang berguna untuk upload penambahan, pengurangan, dan perbandingan. Anda dapat memeriksa halaman tutorial]2 untuk lebih banyak contoh.