Mysql
 sql >> Baza danych >  >> RDS >> Mysql

PHP Konwertuj datę na puste dni/godziny/sekundy temu

Należy zawsze zapisywać daty w formacie daty i godziny MySQL (RRRR-MM-DD). Pozwala to na łatwe korzystanie z wbudowanej funkcji daty w MySQL. Przechowywanie go w jakimkolwiek innym formacie oznacza (potencjalnie dużo) więcej pracy dla Ciebie, gdy chcesz zrobić więcej niż tylko wyświetlanie tych wartości.

Aby osiągnąć to, co chcesz zrobić z PHP, DateTime() (na podstawie tej odpowiedzi ):

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

Te wiersze tworzą DateTime() obiekty z odpowiednimi datami.

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

Ta linia odejmuje drugą datę od pierwszej i zwraca różnicę jako DateInterval() obiekt.

if ($interval->days > 7)

Ten wiersz sprawdza, czy między dwiema datami upłynęło siedem lub więcej dni. Jeśli tak, wykonywany jest pierwszy blok kodu. Jeśli nie, drukowana jest pierwsza data.

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

Ten blok kodu przyjmuje tylko różnicę dat między dwiema datami (DateInterval() obiekt) i sformatuje go w żądanym formacie. Drugi wiersz usuwa wszelkie okresy czasu, które nie mają wartości (tj. 0 miesięcy) i usuwa je z ciągu. Trzecia linia przyjmuje dowolne okresy z jedną wartością (tj. 1 miesiąc) i odcina niepotrzebne „s” na końcu (tj. 1 miesiąc staje się 1 miesiącem).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy jest jakiś sens używania MySQL LIMIT 1 podczas zapytań o pole indeksowane/unikalne?

  2. jak zapisać wartość wyliczenia do DB z Hibernate?

  3. Zaktualizuj kolumnę tabeli z dołączeniem niektórych wartości do tej samej wartości kolumny w MySQL

  4. Jak analizować JSON obrazy z mysql i wypełniać listę?

  5. Czy kluczowy wyznacznik kandydata jest wystarczająco dobry dla BCNF?