Углеродный формат даты Laravel 4 изменяется только один раз

Здравствуйте, я использую laravel 4 для страницы приложения, мне нравятся функции углеродной даты, но у меня проблема с форматом даты. у меня есть формат даты примерно так:

dd/mm/yyyy

И я использую:

\Carbon\Carbon::createFromTimeStamp(strtotime(Auth::user()->created_at))->diffForHumans() 

чтобы показать, сколько ему лет, но это отлично работает, когда формат даты

yyy-mm-dd

как я могу изменить формат даты только один раз, а не каждый раз.


person Chachoo Aguirre    schedule 28.04.2014    source источник
comment
Что вы имеете в виду под тем, как я могу изменить формат даты только один раз, а не каждый раз?   -  person Marwelln    schedule 28.04.2014
comment
Я создал поле created_at с форматом yyyy-mm-dd, я хочу изменить только формат даты, когда я вызываю поле birthday, поэтому, когда я снова вызываю поле created_at, оно работает с тем же форматом. То, что я пытаюсь сказать, это то, что я не хочу менять формат даты глобально.   -  person Chachoo Aguirre    schedule 28.04.2014
comment
Если быть более конкретным, покажите код, в котором вы хотите его использовать, потому что сейчас это только предположение с нашей стороны. Я предполагаю, что вам нужно что-то вроде Carbon::createFromFormat('d/m/Y', $yourDate)   -  person Jarek Tkaczyk    schedule 29.04.2014
comment
Похоже, он хочет изменить формат created_at с YYYY-MM-DD на что-то другое, чтобы ему не приходилось каждый раз преобразовывать его.   -  person Jake Wilson    schedule 29.04.2014


Ответы (3)


Вы можете попробовать это:

$date = Auth::user()->created_at;
\Carbon\Carbon::createFromFormat('d/m/Y', $date)->diffForHumans();

Также вы можете попробовать это (если хотите использовать метод createFromTimeStamp):

$date = str_replace('/', '-', Auth::user()->created_at);
\Carbon\Carbon::createFromTimeStamp(strtotime($date))->diffForHumans();
person The Alpha    schedule 28.04.2014
comment
Это то, что мне нужно, извините, если я не говорю более конкретно, но английский это не мой родной язык - person Chachoo Aguirre; 29.04.2014

Вы можете создать Аксессор, который будет использоваться всякий раз, когда вы выполняете echo $user->created_at:

public function getCreatedAtAttribute($attr)
{
    return Carbon::parse($attr)->diffForHumans();
}

Подробнее об аксессуарах: http://laravel.com/docs/eloquent#accessors-and-mutators

Вы даже можете поместить это в класс BaseModel, и все ваши модели расширят базовый класс для автоматического преобразования всех свойств created_at в указанный формат даты.

person kielabokkie    schedule 28.04.2014

Более простая глобальная настройка формата даты в Laravel 4: проверьте эту ссылку

Фактически, глобально изменить формат даты с помощью библиотеки Carbon очень просто. Все, что вам нужно сделать, это создать файл BaseModel.php в папке модели, затем добавить методы для Created_At и Updated_at -> установить атрибуты. Затем расширите свою модель с помощью этой базовой модели, и все даты будут отображаться в вашем собственном формате.

Надеюсь, вам понравится это открытие ...

person mzk    schedule 10.08.2014