Yii2 и работа с датой [Решено]

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
nepster
Сообщения: 838
Зарегистрирован: 2013.01.02, 03:35

Yii2 и работа с датой [Решено]

Сообщение nepster »

Покопал Yii2 но не смог хорошо разобраться с датой. В доках поискал конкретно док по дате, но не нашел. В поиске нашел отдельно куски где используется форматирование датой, но к сожалению. этого не достаточно. Может плохо искал.
Подскажите пожалуйста как работать с датой в Yii2 ?

Интересует:
- текущая дата
- форматирование даты, например 2014-03-16 21:45:51 в "16 марта 2014 года в 21:45", также если есть с юникс форматами
- Операции с датами, + - интервал времени
Последний раз редактировалось nepster 2014.03.18, 18:21, всего редактировалось 1 раз.
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Yii2 и работа с датой

Сообщение samdark »

Текущая дата:

Код: Выделить всё

new DateTime()
 
Форматирование даты:

Код: Выделить всё

$date = new DateTime('2000-01-01');
echo $date->format('Y-m-d H:i:s');
 
Операции:

Код: Выделить всё

$launchDate = new DateTime("2015-01-01", new DateTimeZone("UTC"));
$today = new DateTime();
$daysToLaunch = $today->diff($launchDate, false)->days;
 
И да, это всё часть PHP.
nepster
Сообщения: 838
Зарегистрирован: 2013.01.02, 03:35

Re: Yii2 и работа с датой

Сообщение nepster »

это я раньше, если где-то во фраэмворке не разбирался, особо не колебался и писал себе библиотеку на чистом php. Сейчас хочу полностью на 100% разобраться с возможностями, поэтому если что-то не нахожу сразу спрашиваю. Как пример перебираю старый проект на yii1 и выбрасываю по сути 70% кода. Так как это давным давно уже было реализовано из коробки.

Я так понял в Yii2 не включили работу с датой в пользу стандартного php класса который появился в версии 5.3 ? Так как в yii1, были стандартные хелперы для даты
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Yii2 и работа с датой

Сообщение samdark »

Да.
nepster
Сообщения: 838
Зарегистрирован: 2013.01.02, 03:35

Re: Yii2 и работа с датой [Решено]

Сообщение nepster »

большое спасибо!
ju1jan
Сообщения: 1
Зарегистрирован: 2015.03.25, 10:47

Re: Yii2 и работа с датой [Решено]

Сообщение ju1jan »

Есть вариант потипу такого:

Код: Выделить всё

Yii::$app->formatter->asDatetime($value, Yii::$app->params['dateFormat']);
kutsanov
Сообщения: 165
Зарегистрирован: 2012.02.08, 15:22

Re: Yii2 и работа с датой [Решено]

Сообщение kutsanov »

$product->dt = '2014-12-03';
\Yii::$app->formatter->asDate($product->dt, 'php:F, Y');
Выводит - декабря, 2014
есть ли возможность вывести декабрь, 2014 (именительный падеж)?
или все же надо писать свои массив с месяцами?
Nerf
Сообщения: 780
Зарегистрирован: 2015.01.29, 00:37

Re: Yii2 и работа с датой [Решено]

Сообщение Nerf »

kutsanov писал(а):
$product->dt = '2014-12-03';
\Yii::$app->formatter->asDate($product->dt, 'php:F, Y');
Выводит - декабря, 2014
есть ли возможность вывести декабрь, 2014 (именительный падеж)?
или все же надо писать свои массив с месяцами?
Попробуйте задать дату в ICU формате. http://userguide.icu-project.org/formatparse/datetime
Не уверен, но посмотрите M vs L.
Аватара пользователя
I_decision
Сообщения: 5
Зарегистрирован: 2016.04.16, 18:08
Контактная информация:

Re: Yii2 и работа с датой [Решено]

Сообщение I_decision »

1) Вам нужно написать функцию php:

function translite($value) {
$value = strtr($value, array(
"January" => "январь",
"February" => "февраль",
"March" => "март",
"April" => "апрель",
"May" => "май",
"June" => "июнь",
"July" => "июль",
"August" => "август",
"September" => "сентябрь",
"October" => "октябрь",
"November" => "ноябрь",
"December" => "декабрь"));

return $value;
}

-----------------------------------------------------------

2) положить в папку , ну к примеру "dll" , файл , назовём его "function.php"
3) Положить папку "dll" с файлом "function.php" во "вьюшку" Yii
4) на созданной странице, где через use подключаются классы добавляем нашу библиотеку:
require(__DIR__ . '/../dll/function.php');
5) после <?php ?> пишем:
<?php foreach ($post as $year) { ?>
<li>
<a href="/ru/site/year/<?php echo Yii::$app->formatter->asDate($year->show_time, 'php:Y');?>">
<?php
echo translite(Yii::$app->formatter->asDate($year->show_time, 'php:F '));
echo Yii::$app->formatter->asDate($year->show_time, 'php:Y');
?>
</a>
</li>
<?php } ?>
где:
$post = Article::find()->all(); <------- это пишем в экшене контроллера
$year->show_time = '03.04.2016'; <------------- эти даты можно вывести через БД или через массив, смотря какая задача.


-----------------------------------------------------

получится что-то типа:

май 2014
июнь 2014
июнь 2014
апрель 2016

-----------------------------------------------------------------

;) мне приятно, если я кому-то помог
не так страшен код, как его трактуют
Onotole
Сообщения: 1808
Зарегистрирован: 2012.12.24, 12:49

Re: Yii2 и работа с датой [Решено]

Сообщение Onotole »

проще написать костыль, чем обновить ICU, да?)
Аватара пользователя
I_decision
Сообщения: 5
Зарегистрирован: 2016.04.16, 18:08
Контактная информация:

Re: Yii2 и работа с датой [Решено]

Сообщение I_decision »

Что такое ICU ???
не так страшен код, как его трактуют
Onotole
Сообщения: 1808
Зарегистрирован: 2012.12.24, 12:49

Re: Yii2 и работа с датой [Решено]

Сообщение Onotole »

I_decision писал(а): 2017.02.23, 20:33 Что такое ICU ???
http://site.icu-project.org/
Аватара пользователя
I_decision
Сообщения: 5
Зарегистрирован: 2016.04.16, 18:08
Контактная информация:

Re: Yii2 и работа с датой [Решено]

Сообщение I_decision »

Спасибо! ))
не так страшен код, как его трактуют
Ответить