преобразование целочисленной даты в форматированный текст

#php

#php

Вопрос:

У меня есть база данных sql со столбцом даты, подобным этому yyyymmdd (20111109), я обычно сортирую свои запросы возврата по дате.

Я хотел бы знать, как преобразовать это в (D jS M) или (Ср. 9 ноября).

Для месяца, даты и порядкового суффикса я использую substr вместе с регистром. но это будний день, из-за которого я расстраиваюсь.

Есть ли более простой метод?

Заранее спасибо.

Ответ №1:

Если вас интересует что-то более сложное:

   $date = DateTime::createFromFormat('Ymd', '20111109');
  echo $date->format('D jS M');
  

Это должно быть более надежным в долгосрочной перспективе.

Комментарии:

1. Вау. это именно то, что я искал. точно!

2. Не забывайте, что это работает только в PHP >= 5.3. 5.2.x выдаст вам ошибку при попытке использовать DateTime::createFromFormat(). Обходным путем для этого является использование Zend_Date от Zend Framework.

Ответ №2:

Это должно сработать:

 date_default_timezone_set('America/Los_Angeles');
$date = strtotime($your_string);
$formatted_date = date('D jS M', $date);
echo $formatted_date;
  

Комментарии:

1. А. спасибо миллион человек. Я не думал, что strtotime будет работать подобным образом

2. Np 😉 Не забудьте установить часовой пояс по умолчанию, если вы этого еще не сделали. 😉

Ответ №3:

Попробуйте использовать strtotime и функцию date()

с помощью комбинации этих методов вы можете достичь:

 echo date("D j, M", strtotime(20111109));