PHP Как получить дату на русском языке?
Для перевода даты на русский язык, нам понадобится массив с месяцами на русском языке (стандартными средствами перевод не предусмотрен). Также, чтобы извлечь данные из даты (например, узнать порядковый номер месяца) её необходимо передать в специальный класс DateTime.
format('n') - 1; // 6 // месяцы на русском языке $months = ['Января', 'Февраля', 'Марта', 'Апреля', 'Мая', 'Июня', 'Июля', 'Августа', 'Сентября', 'Октября', 'Ноября', 'Декабря']; //получаем месяц из массива $ru_month = $months[$i]; //Июля //дата на русском языке $ru_date = $date->format("d $ru_month Y"); // 05 Июля 2015 ?>
Если на русском языке, нужно узнать день недели, то поможет решить задачу следующий способ:
format('N') - 1; // 6 // получаем день недели на русском $ru_day = $days[$i]; // Воскресенье // дата полностью $ru_date = $date->format("Y-m-d $ru_day"); // 2015-07-05 Воскресенье ?>
На мой взгляд, это самые красивый способ решить поставленную задачу.
Если есть необходимость вывести дату на сайте на русском языке, то для этого применяется код. который приведу ниже. Его надо подставить вместо значения месяца от одного до двенадцати:
".01." => "января",
".02." => "февраля",
".03." => "марта",
".04." => "апреля",
".05." => "мая",
".06." => "июня",
".07." => "июля",
".08." => "августа",
".09." => "сентября", ".10." => "октября",
".11." => "ноября",
".12." => "декабря"
]; //текущая дата $currentDate = date("d.m.Y"); //переменная $currentDate хранит текущую дату в формате 22.07.2020 //но так как наша задача - вывод русской даты, то заменяем число месяца на название: $_mD = date(".m."); //номер месяца для замены $currentDate = str_replace($_mD, " ".$_monthsList[$_mD]." ", $currentDate); // замена //теперь в переменной $currentDate хранится дата в формате 22 июня 2020 ?>
А вот этот код дает возможность вывести дату в формате 12.10.2020:
"января", ".02." => "февраля", ".03." => "марта", ".04." => "апреля", ".05." => "мая", ".06." => "июня", ".07." => "июля", ".08." => "августа", ".09." => "сентября", ".10." => "октября", ".11." => "ноября", ".12." => "декабря" ]; //Наша задача - вывод русской даты, поэтому заменяем число месяца на название: $_mD = date(".m.", strtotime($currentDate)); //для замены $currentDate = str_replace($_mD, " ".$_monthsList[$_mD]." ", $currentDate); //теперь в переменной $currentDate хранится дата в формате 12 марта 2020 ?>
$dt = new DateTime;
$formatter = new IntlDateFormatter(
‘ru_RU’,
IntlDateFormatter::LONG,
IntlDateFormatter::LONG );
$formatter->setPattern(‘d MMMM yyyy’);
echo «заказ создан: «.$formatter->format($dt).»вы заказали: «;
$tireqty = $_REQUEST[‘tires’]; echo $tireqty.’ шины’;
$oilqty = $_POST[«oil»]; echo $oilqty.» бутылок масла»;
$sparkqty = $_POST[«spark»]; echo $sparkqty.» свечей зажигания»;
$totalqty = (int)$tireqty + (int)$oilqty + (int)$sparkqty;
echo ‘заказано товаров: ‘.$totalqty;
Вывести на PHP месяц и день недели на русском
Довольно часто приходится сталкиваться с выводом названий месяцев и дней недели по-русски. При чем в различных вариантах, к примеру с полным названием или сокращенным, с большой буквы или с маленькой.
Можно воспользоваться одним из этих 2 вариантов для вывода даты на русском. Мне больше нравится тот, где больше кода, так как в нем можно изменить текстовые названия как угодно под свою задачу.
С помощью функции setlocale()
Для корректной работы в системе должна быть установлена соответствующая локаль. Из плюсов: несколько строк кода. Из минусов: сложнее переделать названия под себя.
Что нужно знать о ставках на CS:GO beting-rating.ru
С помощью готового решения
Суть решения в том, что название выводится по номеру ключа в массиве, совпадающего с порядковым номером месяца или днём недели. Данный пример можно оформить в функции для множественного использования на странице. Из плюсов: названия можно переделать как вам угодно. Из минусов: больше строк кода, чем в примере выше.
'Января', 2 => 'Февраля', 3 => 'Марта', 4 => 'Апреля', 5 => 'Мая', 6 => 'Июня', 7 => 'Июля', 8 => 'Августа', 9 => 'Сентября', 10 => 'Октября', 11 => 'Ноября', 12 => 'Декабря' ); echo $monthes[(date('n', strtotime($date)))]; // Вывод дня недели $days = array( 'Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота' ); echo $days[(date('w', strtotime($date)))]; ?>
Подборка бесплатных IT-курсов и вебинаров от Skillbox.
Бесплатные IT-курсы, нужно только пройти онлайн-тест здесь
Если вам понравилась статья, вы можете отблагодарить автора любой суммой, какую сочтете для себя приемлемой:
dastanaron / DateEntity.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
/* |
* Методы класса |
* __construct($date) — должен получить строку с датой, или пустой, просто |
* DateToTimestamp() — переводит полученную в конструктор дату в timestamp unix |
* dateToBlog() — возвращает строку типа Суббота, 18 Март 2017 |
* RusDayofWeak() — возвращает русское название дня недели |
* RusNameofMonth() — возвращает русское название месяца |
*/ |
namespace Blogger \ BlogBundle \ Entity ; |
class DateEntity |
protected $ date ; |
protected $ timestamp ; |
function __construct ( $ date = » ) |
if (empty( $ date )) |
$ this -> date = date( ‘Y-m-d’ ); |
$ this -> timestamp = time(); |
> |
else |
$ this -> date = $ date ; |
$ this -> timestamp = $ this -> DateToTimestamp ( $ this -> date ); |
> |
> |
private function DateToTimestamp () |
$ newdate = new \ DateTime ( $ this -> date ); |
$ timestamp = $ newdate -> getTimestamp (); |
return $ timestamp ; |
> |
public function dateToBlog () |
$ string = $ this -> RusDayofWeak (); |
$ string .= ‘, ‘ . date( ‘d’ , $ this -> timestamp ) . ‘ ‘ . $ this -> RusNameofMonth () . ‘ ‘ . date( ‘Y’ , $ this -> timestamp ); |
return $ string ; |
> |
private function RusDayofWeak () |
$ val = ( int )date( ‘w’ , $ this -> timestamp ); |
switch ( $ val ) |
case 0 : |
return ‘Воскресенье’ ; |
break ; |
case 1 : |
return ‘Понедельник’ ; |
break ; |
case 2 : |
return ‘Вторник’ ; |
break ; |
case 3 : |
return ‘Среда’ ; |
break ; |
case 4 : |
return ‘Четверг’ ; |
break ; |
case 5 : |
return ‘Пятница’ ; |
break ; |
case 6 : |
return ‘Суббота’ ; |
break ; |
default : |
return false ; |
break ; |
> |
> |
private function RusNameofMonth () |
$ val = date( ‘n’ , $ this -> timestamp ); |
switch ( $ val ) |
case 1 : |
return » Январь «; |
break ; |
case 2 : |
return » Февраль «; |
break ; |
case 3 : |
return » Март «; |
break ; |
case 4 : |
return » Апрель «; |
break ; |
case 5 : |
return » Май «; |
break ; |
case 6 : |
return » Июнь «; |
break ; |
case 7 : |
return » Июль «; |
break ; |
case 8 : |
return » Август «; |
break ; |
case 9 : |
return » Сентябрь «; |
break ; |
case 10 : |
return » Октябрь «; |
break ; |
case 11 : |
return » Ноябрь «; |
break ; |
case 12 : |
return » Декабрь «; |
break ; |
default : |
return false ; |
break ; |
> |
> |
> |
Русская дата средствами PHP
Очень часто встает задача в скрипте использовать русскую дату, к примеру, название месяца и дня недели на русском. Функция date() возвращает названия на английском языке. Как же теперь быть? Неужели придется городить функции по переводу даты на русский? Решение очень простое, оказывается в PHP уже включены все названия дней недели и месяцев на различных языках.
Для того чтобы использовать вывод названий на отличном от английского языка, нам необходимо воспользоваться функцией strftime().
Возвращает строку, отформатированную в соответствии с аргументом format , используя аргумент timestamp или текущее системное время, если этот аргумент не передан. Названия месяцев, дней недели и другие строки, зависящие от языка, соответствуют текущей локали, установленной функцией setlocale().
- %a – сокращенное название дня недели в текущей локали
- %A – полное название дня недели в текущей локали
- %b – сокращенное название месяца недели в текущей локали
- %B – полное название месяца недели в текущей локали
- %c – предпочтительный формат даты и времени в текущей локали
- %C – столетие (год, деленный на 100 и огругленный до целого, от 00 до 99)
- %d – день месяца в виде десятичного числа (от 01 до 31)
- %D – аналогично %m/%d/%y
- %e – день месяца в виде десятичного числа, если это одна цифра, то перед ней добавляется пробел (от ‘ 1′ до ‘31′)
- %g – подобно %G, но без столетия.
- %G – Год, 4-значное число, соответствующее номеру недели по ISO (см. %V). Аналогично %Y, за исключением того, что если номер недели по ISO соответствует предыдущему или следующему году, используется соответствующий год.
- %h – аналогично %b
- %H – номер часа от 00 до 23
- %I – номер часа от 01 до 12
- %j – номер дня в году (от 001 до 366)
- %m – номер месяца (от 01 до 12)
- %M – минуты
- %n – символ «\n»
- %p – `am’ или `pm’, или соответствующие строки в текущей локали
- %r – время в формате a.m. или p.m.
- %R – время в 24-часовом формате
- %S – секунды
- %t – символ табуляции («\t»)
- %T – текущее время, аналогично %H:%M:%S
- %u – номер дня недели от 1 до 7, где 1 соответствует понедельнику
- %U – порядковый номер недели в текущем году. Первым днем первой недели в году считается первое воскресенье года.
- %V – Порядковый номер недели в году по стандарту ISO 8601:1988 от 01 до 53, где 1 соответствует первой неделе в году, в которой как минимум 4 дня принадлежат этому году. Первым днем недели считается понедельник. (Используйте %G or %g для определения соответствующего года)
- %W – порядковый номер недели в текущем году. Первым днем первой недели в году считается первый понедельник года.
- %w – номер дня недели, 0 соответствует воскресенью
- %x – предпочтительный формат даты без времени в текущей локали
- %X – предпочтительный формат времени без даты в текущей локали
- %y – год без столетия (от 00 до 99)
- %Y – год, включая столетие
- %Z – временная зона в виде смещения, аббривеатуры или полного наименования
- %% – символ `%’
Как видим, параметры отличны от функции date(). Для того чтобы использовать эту функцию, необходимо установить локаль, для России она будет такой:
setlocale(LC_ALL, 'ru_RU.CP1251', 'rus_RUS.CP1251', 'Russian_Russia.1251');
setlocale() – Устанавливает локаль.
Теперь можно попробовать вывести сегодняшнюю дату «по русски»