<?php namespace App\Services; class Date { public static function zmdate($date) { $currentTime = time(); $dateDiff = $currentTime - $date; if ($date != null) { if ($dateDiff <= 1) { return "только что"; } elseif ($dateDiff < 60) { return $dateDiff . " секунд " . self::getAgoSuffix($dateDiff); } elseif ($dateDiff < 3600) { $minutes = floor($dateDiff / 60); return $minutes . " " . self::getMinuteSuffix($minutes) . " " . self::getAgoSuffix($minutes); } elseif ($dateDiff < 86400) { $hours = floor($dateDiff / 3600); return $hours . " " . self::getHourSuffix($hours) . " " . self::getAgoSuffix($hours); } else { return self::formatDate($date); } } } private static function getAgoSuffix($value) { return "назад"; } private static function getMinuteSuffix($value) { $lastDigit = $value % 10; $lastTwoDigits = $value % 100; if ($lastDigit == 1 && $lastTwoDigits != 11) { return "минуту"; } elseif (($lastDigit >= 2 && $lastDigit <= 4) && ($lastTwoDigits < 10 || $lastTwoDigits > 20)) { return "минуты"; } else { return "минут"; } } private static function getHourSuffix($value) { $lastDigit = $value % 10; $lastTwoDigits = $value % 100; if ($lastDigit == 1 && $lastTwoDigits != 11) { return "час"; } elseif (($lastDigit >= 2 && $lastDigit <= 4) && ($lastTwoDigits < 10 || $lastTwoDigits > 20)) { return "часа"; } else { return "часов"; } } private static function formatDate($date) { $formattedDate = date("j F Y в H:i", $date); $formattedDate = str_replace( array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"), array("января", "февраля", "марта", "апреля", "мая", "июня", "июля", "августа", "сентября", "октября", "ноября", "декабря"), $formattedDate ); return $formattedDate; } } ?>