Документы для веб-разработчиков

<? /////////////////////////////////////////////////////////////////////// // Основные функции и классы для работы с датой: // https://www.php.net/manual/ru/book.datetime.php /////////////////////////////////////////////////////////////////////// // Входные данные в виде строки (8 марта 2021 года) $dateString = "2021/03/08"; echo "\$dateString: ".$dateString."<hr/>"; // Распарсим дату (т.к. не понятно что есть что) list($year, $month, $day) = explode("/", $dateString); echo "\$year: ".$year."<br/>"; echo "\$month: ".$month."<br/>"; echo "\$day: ".$day."<br/>"; echo "<hr/>"; // Дата - это тип данных в PHP - как и другие типы (строки, числа и прочие). // Создадим переменную данного типа и поместим в нее нашу дату (год, месяц, день) // $date = new DateTime('2000-01-01'); // Преобразуем к виду 'Y-m-d' $dateTemp = implode("-", array($year, $month, $day)); echo "\$dateTemp : ".$dateTemp."<br/>"; // Или все вышеизложенное в одну строку чтобы получить 2021/03/08 -> 2021-03-08 // параметры для форматирования тут: https://www.php.net/manual/ru/datetime.format.php $dateTemp = DateTime::createFromFormat('Y/m/d', $dateString)->format('Y-m-d'); echo "\$dateTemp (DateTime::createFromFormat): ".$dateTemp."<br/>"; // Вставляем преобразованную строку в конструктор для получения типа Дата $date = new DateTime($dateTemp); // Теперь в переменной $data - наша дата, и мы уже можем с ней работать как с объектом, // у которого есть куча полезных методов // Например, отформатируем: $dateFormat = $date->format('d.m.Y'); echo "\$dateFormat: ". $dateFormat. "<hr/>"; // Получим дату в секундах метки времени timestamp Unix $dateSeconds = strtotime($dateFormat); echo "\$dateSeconds: ".$dateSeconds."<br/>"; // Получим обратно отформатированную строку с датой // (передаем форматирование и время секундах) $dateFormat = date("m.d.Y", $dateSeconds); echo "\$dateFormat: ". $dateFormat. "<hr/>"; // Теперь добавляем к дате дни часы и прочее // https://www.php.net/manual/ru/datetime.add.php // https://www.delftstack.com/ru/howto/php/how-to-add-days-to-date-in-php/ // Добавим день $date = new DateTime($dateTemp); $date->add(new DateInterval('P1D')); // P1D - период в 1 день $dateFormat = $date->format('d.m.Y'); echo "\$dateFormat (plus 1 day): ". $dateFormat. "<hr/>"; // Добавим 45 дней используя переменную $date = new DateTime($dateTemp); $days = 45; $date->add(new DateInterval('P'.$days.'D')); $dateFormat = $date->format('d.m.Y'); echo "\$dateFormat (plus ".$days." days): ". $dateFormat. "<hr/>"; // Вычитаем дни $date = new DateTime($dateTemp); $days = 365; $dateMinusDay = $date->sub(new DateInterval('P'.$days.'D')); $dateFormat = $date->format('d.m.Y'); echo "\$dateFormat (minus ".$days." days): ". $dateFormat. "<hr/>"; ///////////////////////////////////////////////////////////////// // Примеры форматирования даты // https://www.php.net/manual/ru/datetime.createfromformat.php ///////////////////////////////////////////////////////////////// // -------------------------------------------------------------- // Распарсиваем данные и выводим в нужном формате // -------------------------------------------------------------- $arResult = array(); $arResult["DATE_CREATE"] = "01.09.2017 16:54:34"; $datePublished = DateTime::createFromFormat('d.m.Y H:i:s', $arResult["DATE_CREATE"])->format('Y-m-d'); echo $arResult["DATE_CREATE"]; // 01.09.2017 16:54:34 // Исходник echo $datePublished; // 2017-09-01 // Результат // -------------------------------------------------------------- // Дата и время // -------------------------------------------------------------- echo date("Y-m-d"); // 2019-03-01 - Дата для сортировки echo date("Y-m-d h:m:s"); // 2019-03-01 02:03:24 - Дата и время для сортировки echo date("d.m.Y h:m:s"); // 01.03.2019 02:03:43 - Обычная Дата и время // Format Date $pattern = '/(\w+) (\d+), (\d+)/i'; $replacement = '${1}1,$3'; $string = 'April 15, 2003'; echo preg_replace($pattern, $replacement, $string); // Русификация даты function rus_date() { $translate = array( "am" => "дп", "pm" => "пп", "AM" => "ДП", "PM" => "ПП", "Monday" => "Понедельник", "Mon" => "пн", "Tuesday" => "Вторник", "Tue" => "вт", "Wednesday" => "Среда", "Wed" => "ср", "Thursday" => "Четверг", "Thu" => "чт", "Friday" => "Пятница", "Fri" => "пт", "Saturday" => "Суббота", "Sat" => "сб", "Sunday" => "Воскресенье", "Sun" => "вс", "January" => "января", "Jan" => "Янв", "February" => "февраля", "Feb" => "Фев", "March" => "марта", "Mar" => "Мар", "April" => "апреля", "Apr" => "Апр", "May" => "мая", "May" => "мая", "June" => "июня", "Jun" => "Июн", "July" => "июля", "Jul" => "Июл","August" => "августа", "Aug" => "Авг", "September" => "сентября", "Sep" => "Сен", "October" => "октября", "Oct" => "Окт", "November" => "ноября", "Nov" => "Ноя", "December" => "декабря","Dec" => "Дек", "st" => "ое", "nd" => "ое", "rd" => "е","th" => "ое" ); if (func_num_args() > 1) { $timestamp = func_get_arg(1); return strtr(date(func_get_arg(0), $timestamp), $translate); } else { return strtr(date(func_get_arg(0)), $translate); } }