diff options
author | Camil Staps | 2016-08-01 00:23:24 +0200 |
---|---|---|
committer | Camil Staps | 2016-08-01 00:23:24 +0200 |
commit | 3cbdbd7f197d076709641e83b41814b8c6a855ea (patch) | |
tree | 5c060a97169d8349c36be6d408a94d4992c6da96 /classes | |
parent | Payment confirmation (diff) |
Implement $relatively for formatting dates
Diffstat (limited to 'classes')
-rw-r--r-- | classes/BusinessAdmin.php | 54 |
1 files changed, 40 insertions, 14 deletions
diff --git a/classes/BusinessAdmin.php b/classes/BusinessAdmin.php index 83fa4b3..1ea02ae 100644 --- a/classes/BusinessAdmin.php +++ b/classes/BusinessAdmin.php @@ -431,32 +431,58 @@ class BusinessAdmin { /** * Format a date nicely * - * @todo implement $relatively = true - * * @param int $timestamp The UNIX timestamp to format * @param bool $with_time If false, only the date is returned; if false, also the time * @param bool $full_date If true, a year will be outputted even if the date is in the current year - * @param bool $relatively Whether or not to show the date relatively (e.g. '1 day ago') (NOT IMPLEMENTED YET) + * @param bool $relatively Whether or not to show the date relatively (e.g. '1 day ago') * * @return string The formatted date */ public static function formatDate($timestamp, $with_time = true, $full_date = false, $relatively = false) { - $output = ''; - if (date('Y', $timestamp) == 1970) { - return 'never'; + if ($relatively) { + $delta = time() - $timestamp; + $second = 1; + $minute = 60 * $second; + $hour = 60 * $minute; + $day = 24 * $hour; + $month = 30 * $day; + $year = 365 * $day; + if ($delta < 2 * $minute) + return 'just now'; + if ($delta < 45 * $minute) + return floor($delta / $minute) . ' minutes ago'; + if ($delta < 90 * $minute) + return 'an hour ago'; + if ($delta < 24 * $hour) + return floor($delta / $hour) . ' hours ago'; + if ($delta < 48 * $hour) + return 'yesterday'; + if ($delta < 30 * $day) + return floor($delta / $day) . ' days ago'; + + $output = []; + $years = floor($delta / $year); + if ($years != 0) + $output[] = $years == 1 ? 'one year' : $years . ' years'; + $delta -= $years * $year; + $months = floor($delta / $month); + if ($months != 0) + $output[] = $months == 1 ? 'one month' : $months . ' months'; + return implode(', ', $output); } - if (date('d/m/Y') == date('d/m/Y', $timestamp)) { + + if (date('Y', $timestamp) == 1970) + return 'never'; + if (date('d/m/Y') == date('d/m/Y', $timestamp)) return 'today'; - } - if (date('Y') != date('Y', $timestamp) || $full_date) { + + $output = ''; + if (date('Y') != date('Y', $timestamp) || $full_date) $output .= date('Y-', $timestamp); - } - if (date('d/m/Y') != date('d/m/Y', $timestamp) || $full_date) { + if (date('d/m/Y') != date('d/m/Y', $timestamp) || $full_date) $output .= date('m-d', $timestamp); - } - if ($with_time) { + if ($with_time) $output .= date(' H:i', $timestamp); - } return $output; } |