Mysql
 sql >> база данни >  >> RDS >> Mysql

PHP Преобразува датата в празни дни/часове/секунди

Винаги трябва да запазвате вашите дати във формата за дата и час на MySQL (ГГГГ-ММ-ДД). Това ви позволява лесно да се възползвате от вградената функционалност за дата на MySQL. Съхраняването му във всеки друг формат означава (потенциално много) повече работа за вас, когато искате да направите повече от просто показване на тези стойности.

За да постигнете това, което искате да направите с PHP, трябва да DateTime() (въз основа на този отговор ):

$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);

Тези редове създават DateTime() обекти със съответните им дати.

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

Тези редове изваждат втората дата от първата и връщат разликата като DateInterval() обект.

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;

Този кодов блок просто взема разликата в датата между двете дати (a DateInterval() обект) и го форматира във формата, който сте поискали. Вторият ред премахва всички периоди от време, които нямат стойности (т.е. 0 месеца) и ги премахва от низа. Третият ред приема всички периоди с една стойност (т.е. 1 месец) и отрязва ненужните '' в края (т.е. 1 месец става 1 месец).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL заявка за получаване на имена на колони?

  2. Как да получите MySQL ResultSet ред по ред в python

  3. Подготвен изявление за MySQL - Как да преминете през

  4. Динамично създаване на mysql изберете Заявка

  5. mysql конвертиране от UTC в IST