Как работает форматирование даты в Jekyll? - PullRequest
86 голосов
/ 13 сентября 2011

Я использую Jekyll для создания простого сайта.

Я хочу, чтобы поле даты отображалось в формате 12 September 2011.

Я обнаружил, что с помощью творческого поиска в Google,немного манипуляций с форматом даты, но ничего, что, кажется, не дает мне название месяца.У меня есть {{ page.date| date: "%m-%d-%Y" }}, который выводит меня как 09-12-2011, но не совсем то, что я ищу.

Есть ли какой-нибудь способ получить месяц как имя в Jekyll?

Или, если не считать, есть ли документация для атрибута даты?

Ответы [ 6 ]

150 голосов
/ 27 октября 2011

Решение

Этот выходной фильтр:

{{ page.date | date: "%-d %B %Y" }}

производит даты в следующем формате:

9 September 2013

Не пропустите минус (-) вперед %-d на день.Без него числа ниже десяти будут иметь начальные нули (например, 09 September 2013).

Подробную информацию об отдельных токенах форматирования даты можно найти на странице документации по Liquid «Выходные теги и фильтры» .

Подробнее

Я собрал большой набор примеров форматирования даты в Jekyll .Он содержит примеры для нескольких форматов и должен содержать достаточно деталей для форматирования любым удобным для вас способом.Вот некоторые примеры:

  • 2013-09-23
  • 23 сентября 2013 г.
  • сент.23-е, 2013
  • 4 июля 2013 г. (т.е. изменение имен на другие языки, такие как "Juli" вместо "июль").

Наслаждайтесь!

12 голосов
/ 02 марта 2012

Джекилл добавляет фильтр расширения для жидкости.Смотрите здесь .Вы можете отобразить желаемый формат даты, просто запустив фильтр date_to_long_string.

По ссылке:


Дата в длинную строку

Форматирование даты в длинномформат например «27 января 2011».

{{ site.time | date_to_long_string }} => 17 November 2008

3 голосов
/ 24 апреля 2018

Jekyll 3.8 поддерживает порядковые даты из коробки. Для вывода месяца используйте один из них.

{{ page.date | date_to_long_string: "ordinal", "US" }} выведет April 24th, 2018.

{{ page.date | date_to_string: "ordinal", "US" }} выведет Apr 24th, 2018.

{{ page.date | date_to_long_string: "ordinal" }} выдаст 24th April 2018.

{{ page.date | date_to_string: "ordinal" }} выдаст 24th Apr 2018.

3 голосов
/ 13 сентября 2011

Попробуйте «% B», что означает «Полное имя месяца (« январь »)»

поиск в документации по strftime, функции, которая обычно используется для преобразования даты в строку.

2 голосов
/ 28 февраля 2017

Используйте {{ page.date| date: "%d %B %Y" }} для таких дат, как 12 сентября 2011 , см. Красивое и быстрое руководство по форматированию на Jekyll Date Formatting

2 голосов
/ 01 сентября 2015

На всякий случай, если вам нужно специальное решение, вы можете написать плагин Jekyll для форматирования даты, как вы хотите, например, (этот пример для итальянских дат):

module Jekyll
    module ItalianDates
        MONTHS = {"01" => "gennaio", "02" => "febbraio", "03" => "marzo",
                "04" => "aprile", "05" => "maggio", "06" => "giugno",
                "07" => "luglio", "08" => "agosto", "09" => "settembre",
                "10" => "ottobre", "11" => "novembre", "12" => "dicembre"}

        # http://man7.org/linux/man-pages/man3/strftime.3.html
        def italianDate(date)
            day = time(date).strftime("%e") # leading zero is replaced by a space
            month = time(date).strftime("%m")
            year = time(date).strftime("%Y")
            day+' '+MONTHS[month]+' '+year
        end

        def html5date(date)
            day = time(date).strftime("%d")
            month = time(date).strftime("%m")
            year = time(date).strftime("%Y")
            year+'-'+month+'-'+day
        end
    end
end

Liquid::Template.register_filter(Jekyll::ItalianDates)

Просто сохраните это вфайл типа _plugins/italian_dates.rb и используйте его по мере необходимости в шаблонах:

<time datetime="{{page.date | html5date}}">{{page.date | italianDate}}</time>
...