Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

PHP Ubah tanggal menjadi hari/jam/detik kosong yang lalu

Anda harus selalu menyimpan tanggal Anda dalam format datetime MySQL (YYYY-MM-DD). Ini memungkinkan Anda untuk dengan mudah memanfaatkan fungsionalitas tanggal bawaan MySQL. Menyimpannya dalam format lain berarti (berpotensi lebih banyak) bekerja untuk Anda saat Anda ingin melakukan lebih banyak daripada hanya menampilkan nilai-nilai tersebut.

Untuk mencapai apa yang ingin Anda lakukan dengan PHP, Anda akan DateTime() (berdasarkan jawaban ini ):

$datetime1 = new DateTime($firstDate);
$datetime2 = new DateTime($secondDate);
$interval  = $datetime1->diff($datetime2);
if ($interval->days <= 7)
{
    $elapsed   = $interval->format('%y years, %m months, %a days, %h hours, %i minutes, %S seconds');
    $elapsed   = str_replace(array('0 years,', ' 0 months,', ' 0 days,',  ' 0 hours,', ' 0 minutes,'), '', $elapsed);
    $elapsed   = str_replace(array('1 years, ', ' 1 months, ', ' 1 days, ',  ' 1 hours, ', ' 1 minutes'), array('1 year, ', '1 month, ', ' 1 day, ', ' 1 hour, ', ' 1 minute'), $elapsed);
    echo $elapsed;
}
else 
{
    echo $firstDate;
}

$datetime1 = new DateTime($firstDate);
$datetime2 = new DateTime($secondDate);

Baris-baris ini membuat DateTime() objek dengan tanggalnya masing-masing.

$interval  = $datetime1->diff($datetime2);

Baris ini mengurangi tanggal kedua dari tanggal pertama dan mengembalikan selisihnya sebagai DateInterval() objek.

if ($interval->days > 7)

Baris ini memeriksa untuk melihat tujuh hari atau lebih telah berlalu antara dua tanggal. Jika demikian blok kode pertama dijalankan. Jika tidak, tanggal pertama akan dicetak.

$elapsed   = $interval->format('%y years, %m months, %a days, %h hours, %i minutes, %S seconds');
$elapsed   = str_replace(array('0 years,', ' 0 months,', ' 0 days,',  ' 0 hours,', ' 0 minutes,'), '', $elapsed);
$elapsed   = str_replace(array('1 years, ', ' 1 months, ', ' 1 days, ',  ' 1 hours, ', ' 1 minutes'), array('1 year, ', '1 month, ', ' 1 day, ', ' 1 hour, ', ' 1 minute'), $elapsed);
echo $elapsed;

Blok kode ini hanya mengambil perbedaan tanggal antara dua tanggal (a DateInterval() objek) dan memformatnya dalam format yang Anda minta. Baris kedua menghapus periode waktu yang tidak memiliki nilai (yaitu 0 bulan) dan menghapusnya dari string. Baris ketiga mengambil periode dengan satu nilai (yaitu 1 bulan) dan memangkas 's' yang tidak perlu di akhir (yaitu 1 bulan menjadi 1 bulan).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa jenis hash yang digunakan mysql?

  2. Tidak dapat menginstal mysqlclient di centos

  3. Mesin pencari Lucene vs Pencarian database

  4. alat pemantau permintaan mysql

  5. Apakah INSERT IGNORE mengunci tabel meskipun itu mengabaikan sisipan?