Bagaimana cara kerja format tanggal Jekyll?


93

Saya menggunakan Jekyll untuk membuat situs sederhana.

Saya ingin bidang tanggal ditampilkan dalam format 12 September 2011.

Saya telah menemukan, melalui beberapa googling kreatif, sedikit manipulasi format tanggal, tetapi tidak ada yang tampaknya memberi saya nama bulan. Apa yang saya miliki adalah {{ page.date| date: "%m-%d-%Y" }}, yang memberi saya keluaran sebagai 09-12-2011, tetapi tidak sesuai dengan yang saya cari.

Adakah cara untuk mendapatkan nama bulan sebagai nama di Jekyll?

Atau, kecuali itu, apakah ada dokumentasi untuk atribut tanggal?


Filter yang menarik adalah date_to_stringdan date_to_xmlschema(Lihat jekyllrb.com/docs/templates )
Martin Thoma

Dokumen format tanggal jekyll / tanggal cair terlengkap yang
joce

Jawaban:


163

Larutan

Filter keluaran ini:

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

menghasilkan tanggal dengan format seperti:

9 September 2013

Pastikan untuk tidak melewatkan minus ( -) di depan %-duntuk hari itu. Tanpanya, angka di bawah sepuluh akan memiliki nol di depan (misalnya 09 September 2013).

Detail tentang token pemformatan tanggal individu dapat ditemukan di halaman dokumentasi Liquid "Tag dan filter keluaran" .

Info lebih lanjut

Saya mengumpulkan satu set besar contoh format tanggal Jekyll . Ini memberikan contoh untuk beberapa format dan harus memberikan detail yang cukup untuk memformat dengan cara apa pun yang Anda inginkan. Beberapa contoh termasuk:

  • 2013-09-23
  • 23 September 2013
  • 23 September 2013
  • 4 Juli 2013 (yaitu mengubah nama ke bahasa lain seperti "Juli" bukan "Juli").

Nikmati!


Apakah mungkin untuk memformatnya dalam format NNXX, yaitu 1st 2nd 3rd dll?
Ian

@Ian - Saya tidak melihat cara untuk melakukan "1", "2", dll ... dengan format tanggal Liquid. Hal ini dimungkinkan dengan beberapa logika tambahan yang dimasukkan. Posting pertanyaan lain untuk itu secara khusus dan lihat apakah seseorang tahu caranya.
Alan W. Smith

@ Ian - Saya memposting jawaban lain di sini yang membahas pertanyaan ke-1, ke-2, ke-3. Saya juga memperbarui jawaban saya untuk menunjuk ke kumpulan referensi potongan format tanggal.
Alan W. Smith

Jangan gunakan plus: '0'. Gunakan: {{ page.date | date: "%-m-%d-%Y" }}. Perhatikan tanda hubung antara %dan m: %-m.
Nowaker

1
@DamianNowak - Terima kasih atas penunjuk untuk digunakan %-m. Jauh lebih bersih. Saya telah memperbarui jawaban untuk mencerminkan itu dan akan memperbarui posting referensi saya sesegera mungkin.
Alan W. Smith

14

Jekyll menambahkan ekstensi filter ke cairan. Lihat disini . Anda dapat menampilkan format tanggal yang Anda inginkan hanya dengan menjalankan date_to_long_stringfilter.

Dari tautan:


Tanggal untuk String Panjang

Format tanggal dalam format panjang misalnya "27 Januari 2011".

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


4

Jekyll 3.8 mendukung tanggal ordinal di luar kotak. Untuk menghasilkan bulan, gunakan salah satu dari ini.

{{ page.date | date_to_long_string: "ordinal", "US" }}akan mengeluarkan April 24th, 2018.

{{ page.date | date_to_string: "ordinal", "US" }}akan mengeluarkan Apr 24th, 2018.

{{ page.date | date_to_long_string: "ordinal" }}akan mengeluarkan 24th April 2018.

{{ page.date | date_to_string: "ordinal" }}akan mengeluarkan 24th Apr 2018.


3

Coba '% B' yang artinya "Nama bulan lengkap (` `Januari '')"

cari dokumentasi untuk strftime, fungsi yang biasanya digunakan untuk mengubah tanggal menjadi string.


2

Jika Anda menginginkan solusi khusus, Anda dapat menulis plugin Jekyll untuk memformat tanggal yang Anda inginkan, seperti ini (contoh ini untuk tanggal Italia):

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)

Simpan saja ini ke file seperti _plugins/italian_dates.rbdan gunakan sesuai kebutuhan Anda di template:

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

2

Gunakan {{ page.date| date: "%d %B %Y" }}untuk tanggal seperti 12 September 2011 , lihat panduan format yang bagus dan cepat tentang Jekyll Date Formatting

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.