sql >> Databáze >  >> RDS >> Mysql

PHP Převést datum na prázdné dny/hodiny/sekundy

Data byste měli vždy ukládat ve formátu data a času MySQL (YYYY-MM-DD). To vám umožní snadno využít vestavěné funkce data MySQL. Uložení v jakémkoli jiném formátu pro vás znamená (potenciálně mnohem) více práce, když chcete udělat více, než jen zobrazit tyto hodnoty.

Chcete-li dosáhnout toho, co chcete dělat s PHP, měli byste DateTime() (na základě této odpovědi ):

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

Tyto řádky vytvářejí DateTime() objekty s příslušným datem.

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

Tento řádek odečte druhé datum od prvního a vrátí rozdíl jako DateInterval() objekt.

if ($interval->days > 7)

Tento řádek kontroluje, zda mezi těmito dvěma daty uplynulo sedm nebo více dní. Pokud ano, provede se první blok kódu. Pokud ne, vytiskne se první datum.

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

Tento blok kódu bere pouze rozdíl mezi dvěma daty (a DateInterval() objekt) a naformátuje jej do požadovaného formátu. Druhý řádek odstraní všechna časová období, která nemají žádné hodnoty (tj. 0 měsíců), a odstraní je z řetězce. Třetí řádek obsahuje libovolná období s jednou hodnotou (tj. 1 měsíc) a na konci ořezává nepotřebná „s“ (tj. z 1 měsíce se stane 1 měsíc).




  1. Načíst datový soubor MySQL s absolutní URL

  2. Chyba kódování PHP při vytváření XML z databáze

  3. Skupiny dostupnosti SQL Server AlwaysOn:Instalace a konfigurace, část 1

  4. Jak PERIOD_ADD() funguje v MariaDB