Jekyll tarih biçimlendirme nasıl çalışır?


94

Basit bir site oluşturmak için Jekyll kullanıyorum.

Tarih alanının formatta görüntülenmesini istiyorum 12 September 2011.

Bazı yaratıcı googling aracılığıyla biraz tarih formatı manipülasyonu buldum, ancak bana ay adını verebilecek hiçbir şey yok. Sahip olduğum şey {{ page.date| date: "%m-%d-%Y" }}, bana çıktı veren 09-12-2011, ancak tam olarak aradığım şey değil.

Jekyll'de ayı isim olarak almanın bir yolu var mı?

Ya da bu haricinde, tarih niteliği için herhangi bir belge var mı?


İlginç filtreler date_to_stringve date_to_xmlschema(Bkz. Jekyllrb.com/docs/templates )
Martin Thoma

Bulabildiğim en eksiksiz tarih jekyll / sıvı tarih biçimlendirme belge: alanwsmith.com/jekyll-liquid-date-formatting-examples
Joce

Yanıtlar:


163

Çözüm

Bu çıkış filtresi:

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

şu şekilde biçimlendirilmiş tarihler üretir:

9 September 2013

Günün -önündeki eksi ( ) işaretini kaçırmadığınızdan emin olun %-d. Onsuz, on'un altındaki sayıların başında sıfırlar olur (örneğin 09 September 2013).

Ayrı ayrı tarih biçimlendirme simgeleriyle ilgili ayrıntılar, Liquid "Çıktı etiketleri ve filtreleri" dokümantasyon sayfasında bulunabilir .

Daha fazla bilgi

Çok sayıda Jekyll tarih biçimlendirme örneği oluşturdum . Çeşitli biçimler için örnekler sağlar ve istediğiniz şekilde biçimlendirmek için yeterli ayrıntı sağlamalıdır. Bazı örnekler şunları içerir:

  • 2013-09-23
  • 23 Eylül 2013
  • 23 Eylül 2013
  • 4 Temmuz 2013 (yani adların "Temmuz" yerine "Juli" gibi diğer dillere değiştirilmesi).

Zevk almak!


NNXX biçiminde, yani 1. 2. 3. vb. Biçiminde biçimlendirmek mümkün mü?
Ian

@Ian - Liquid tarih biçimlendiricilerinden "1.", "2." vb. Yapmak için bir yol göremiyorum. Ekstra bir mantıkla mümkün olabilir. Bunun için özel olarak başka bir soru gönderin ve birinin nasıl olduğunu bilip bilmediğini görün.
Alan W. Smith

@Ian - Burada 1., 2., 3. soruları ele alan başka bir cevap gönderdim . Ayrıca cevabımı bir referans tarih biçimlendirme parçacıklarına işaret edecek şekilde güncelliyorum.
Alan W. Smith

Kullanmayın plus: '0'. Kullanın: {{ page.date | date: "%-m-%d-%Y" }}. %Ve m: arasındaki kısa çizgiye dikkat edin %-m.
Nowaker

1
@DamianNowak - İşaretçinin kullanacağı için teşekkürler %-m. Çok daha temiz. Cevabı bunu yansıtacak şekilde güncelledim ve mümkün olan en kısa sürede referans yazımı güncelleyeceğim.
Alan W. Smith

14

Jekyll, sıvıya filtre uzantıları ekler. Buraya bakın . Sadece date_to_long_stringfiltreyi çalıştırarak istediğiniz tarih formatını görüntüleyebilirsiniz .

Bağlantıdan:


Uzun Dize Tarih

Tarihi uzun formatta biçimlendirin, örneğin "27 Ocak 2011".

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


4

Jekyll 3.8, sıra dışı tarihleri ​​destekler. Ayın çıktısını almak için bunlardan birini kullanın.

{{ page.date | date_to_long_string: "ordinal", "US" }}çıktı verecektir April 24th, 2018.

{{ page.date | date_to_string: "ordinal", "US" }}çıktı verecektir Apr 24th, 2018.

{{ page.date | date_to_long_string: "ordinal" }}çıktı verecektir 24th April 2018.

{{ page.date | date_to_string: "ordinal" }}çıktı verecektir 24th Apr 2018.


3

"Tam ay adı (` `Ocak '')" anlamına gelen '% B'yi deneyin

tipik olarak bir tarihi dizeye dönüştürmek için kullanılan işlev olan strftime için belgelerde arama yapın.


2

Özel bir çözüm istemeniz durumunda, bir tarihi istediğiniz gibi biçimlendirmek için bir Jekyll eklentisi yazabilirsiniz, örneğin (bu örnek İtalyan tarihleri ​​içindir):

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)

Bunu bir dosyaya kaydedin _plugins/italian_dates.rbve şablonlarda ihtiyacınız olduğu gibi kullanın:

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.