Як працює форматування дати Jekyll?


92

Я використовую Jekyll для створення простого сайту.

Я хочу, щоб поле дати відображалося у форматі 12 September 2011.

Завдяки творчому гуглинню я знайшов трохи маніпуляцій із форматом дат, але нічого, що, здається, не дає мені назви місяця. Те, що я маю, це те {{ page.date| date: "%m-%d-%Y" }}, що дає мені результат 09-12-2011, але не зовсім те, що я шукаю.

Чи є спосіб отримати місяць як назву в Джекіллі?

Або, за винятком цього, чи існує якась документація для атрибута date?


Цікавими є фільтри date_to_stringта date_to_xmlschema(Див. Jekyllrb.com/docs/templates )
Мартін Тома,

Найповніший документ із форматування дати джекілів
joce

Відповіді:


162

Рішення

Цей вихідний фільтр:

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

видає дати, відформатовані як:

9 September 2013

Обов’язково не пропустіть мінус ( -) %-dнапередодні дня. Без цього числа нижче десяти мали б провідні нулі (наприклад 09 September 2013).

Детальну інформацію про окремі маркери форматування дати можна знайти на сторінці документації Liquid "Вихідні теги та фільтри" .

Більше інформації

Я зібрав великий набір прикладів форматування дат Джекіла . Він містить приклади для декількох форматів і повинен містити достатньо деталей для форматування будь-яким способом. Деякі приклади включають:

  • 2013-09-23
  • 23 вересня 2013 р
  • 23 вересня 2013 р
  • 4 липня 2013 р. (Тобто зміна назв на інші мови, такі як "Juli" замість "July").

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


Чи можна отримати його для форматування у форматі NNXX, тобто 1-го 2-го 3-го тощо?
Ян

@Ian - я не бачу способу зробити "1-е", "2-е" тощо ... за допомогою форматорів дати Liquid. Можливо, це можливо за допомогою введеної додаткової логіки. Опублікуйте ще одне запитання для цього і перевірте, чи хтось знає як.
Alan W. Smith

@Ian - Я розмістив тут ще одну відповідь, яка стосується 1-го, 2-го, 3-го запитань. Я також оновлюю свою відповідь, щоб вказати на посилальний набір фрагментів форматування дати.
Alan W. Smith

Не використовуйте plus: '0'. Використання: {{ page.date | date: "%-m-%d-%Y" }}. Зверніть увагу , що дефіс між %і м: %-m.
Nowaker

1
@DamianNowak - Дякуємо за використання вказівника %-m. Це набагато чистіше. Я оновив відповідь, щоб відобразити це, і оновлю мою довідкову публікацію, як тільки зможу.
Alan W. Smith

14

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

За посиланням:


Дата на довгий рядок

Відформатуйте дату в довгому форматі, наприклад, «27 січня 2011 року».

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


4

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

Спробуйте "% B", що означає "Повна назва місяця (` `січень '')"

шукати в документації strftime, функцію, яка зазвичай використовується для перетворення дати в рядок.


2

Про всяк випадок, якщо вам потрібне власне рішення, ви можете написати плагін 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>

2

Використовуйте {{ page.date| date: "%d %B %Y" }}для дат, таких як 12 вересня 2011 року , зверніться до приємного та швидкого посібника з форматування щодо форматування дати Jekyll

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.