ジキルの日付フォーマットはどのように機能しますか?


92

私はJekyllを使用して簡単なサイトを生成しています。

日付フィールドをの形式で表示したい12 September 2011

私は、いくつかの創造的なグーグルを介して、日付形式の操作を少し見つけましたが、月の名前はわかりません。私が持っているのは{{ page.date| date: "%m-%d-%Y" }}、として出力される09-12-2011ものですが、私が探しているものではありません。

ジキルで月を名前として取得する方法はありますか?

または、それを除いて、日付属性のドキュメントはありますか?


興味深いフィルターはdate_to_stringand date_to_xmlschemajekyllrb.com/docs/templatesを参照)
Martin Thoma

私が見つけた最も完全な日付jekyll / liquid日付フォーマットドキュメント:alanwsmith.com/jekyll-liquid-date-formatting-examples
joce

回答:


161

解決

この出力フィルター:

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

次のような形式の日付を生成します。

9 September 2013

その日の-前のマイナス()を見逃さないようにしてください%-d。これがないと、10未満の数値は先行ゼロになります(例:)09 September 2013

個々の日付フォーマットトークンの詳細については、Liquidの「出力タグとフィルタ」のドキュメントページをご覧ください

より詳しい情報

Jekyll日付フォーマットの例の大規模なセットをまとめました。それはいくつかのフォーマットの例を提供し、あなたが好きな方法でフォーマットするのに十分な詳細を提供するはずです。いくつかの例は次のとおりです。

  • 2013-09-23
  • 2013年9月23日
  • 2013年9月23日
  • 2013年7月4日(つまり、名前を「7月」ではなく「ジュリ」などの他の言語に変更する)。

楽しい!


それをNNXXフォーマット、すなわち1st 2nd 3rdなどでフォーマットすることは可能ですか?
Ian

@Ian-Liquidの日付フォーマッターで「1st」、「2nd」などを実行する方法がわかりません。いくつかの追加ロジックを投入することで可能になる場合があります。そのための別の質問を具体的に投稿し、誰かがその方法を知っているかどうかを確認してください。
アランW.スミス

@Ian-1 目、2つ目、3つ目の質問に対処する別の回答をここに投稿しました。また、日付書式スニペットの参照セットを指すように回答を更新しています。
アランW.スミス

使用しないでくださいplus: '0'。使用:{{ page.date | date: "%-m-%d-%Y" }}%とm:の間のハイフンに注意してください%-m
Nowaker 2013

1
@DamianNowak-使用するポインタをありがとう%-m。それははるかにきれいです。私はそれを反映するように回答を更新しました。できる限り早く参照投稿を更新します。
アランW.スミス

14

ジキルはフィルター拡張を液体に追加します。こちらをご覧くださいdate_to_long_stringフィルターを実行するだけで、目的の日付形式を表示できます。

リンクから:


長い文字列への日付

日付を長い形式でフォーマットします(例:「2011年1月27日」)。

{{ 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

「完全な月の名前(「1月」)を意味する「%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>

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.