การจัดรูปแบบวันที่ของ Jekyll ทำงานอย่างไร


93

ฉันใช้ Jekyll เพื่อสร้างไซต์ง่ายๆ

12 September 2011ฉันต้องการฟิลด์วันที่จะแสดงในรูปแบบ

ฉันได้พบผ่าน googling ที่สร้างสรรค์การปรับแต่งรูปแบบวันที่เล็กน้อย แต่ดูเหมือนจะไม่มีอะไรทำให้ฉันได้ชื่อเดือน สิ่งที่ฉันมีคือ{{ page.date| date: "%m-%d-%Y" }}ซึ่งทำให้ฉันได้ผลลัพธ์เป็น09-12-2011แต่ไม่ใช่สิ่งที่ฉันกำลังมองหา

มีวิธีใดบ้างที่จะได้รับเดือนเป็นชื่อใน Jekyll?

หรือยกเว้นว่ามีเอกสารสำหรับแอตทริบิวต์วันที่หรือไม่


ตัวกรองที่น่าสนใจคือdate_to_stringและdate_to_xmlschema(ดูjekyllrb.com/docs/templates )
Martin Thoma

เอกสารการจัดรูปแบบวันที่ jekyll / liquid date ที่สมบูรณ์ที่สุดที่ฉันสามารถหาได้: alanwsmith.com/jekyll-liquid-date-formatting-examples
joce

คำตอบ:


163

วิธีการแก้

ตัวกรองเอาต์พุตนี้:

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

สร้างวันที่ในรูปแบบเช่น:

9 September 2013

อย่าพลาดเครื่องหมายลบ ( -) ข้างหน้า%-dสำหรับวันนี้ หากไม่มีตัวเลขที่ต่ำกว่าสิบจะมีเลขศูนย์นำหน้า (เช่น09 September 2013)

รายละเอียดเกี่ยวกับวันของแต่ละบุคคลการจัดรูปแบบราชสกุลสามารถพบได้บนเหลว "แท็กเอาท์พุทและฟิลเตอร์" หน้าเอกสาร

ข้อมูลเพิ่มเติม

ฉันใส่กันชุดใหญ่ของ Jekyll ตัวอย่างวันที่จัดรูปแบบ มีตัวอย่างสำหรับรูปแบบต่างๆและควรให้รายละเอียดเพียงพอที่จะจัดรูปแบบตามที่คุณต้องการ ตัวอย่างบางส่วน ได้แก่ :

  • 2013-09-23
  • 23 กันยายน 2556
  • 23 กันยายน 2556
  • 4 กรกฎาคม 2556 (คือการเปลี่ยนชื่อเป็นภาษาอื่นเช่น "Juli" แทน "July")

สนุก!


เป็นไปได้หรือไม่ที่จะนำไปจัดรูปแบบในรูปแบบ NNXX เช่น 1st 2nd 3rd เป็นต้น
เอียน

@Ian - ฉันไม่เห็นวิธีทำ "ที่ 1" "ที่ 2" ฯลฯ ... จากรูปแบบวันที่เหลว อาจเป็นไปได้ด้วยตรรกะพิเศษบางอย่างโพสต์คำถามอื่นสำหรับคำถามนั้นโดยเฉพาะและดูว่ามีใครรู้วิธีบ้าง
Alan

@Ian - ฉันโพสต์คำตอบอื่นที่นี่เพื่อตอบคำถามที่ 1, 2, 3 ฉันยังอัปเดตคำตอบให้ชี้ไปที่ชุดอ้างอิงของข้อมูลโค้ดการจัดรูปแบบวันที่
Alan

อย่าใช้plus: '0'. ใช้: {{ page.date | date: "%-m-%d-%Y" }}. ขอให้สังเกตยัติภังค์ระหว่าง%และ %-mm:
Nowaker

1
@DamianNowak - %-mขอบคุณสำหรับตัวชี้ไปที่การใช้งาน มันสะอาดกว่ามาก ฉันได้อัปเดตคำตอบเพื่อให้สอดคล้องกับสิ่งนั้นและจะอัปเดตโพสต์อ้างอิงของฉันโดยเร็วที่สุด
Alan

14

Jekyll เพิ่มส่วนขยายตัวกรองลงในของเหลว ดูที่นี่ . คุณสามารถแสดงรูปแบบวันที่ที่คุณต้องการได้เพียงแค่เรียกใช้date_to_long_stringตัวกรอง

จากลิงค์:


วันที่เป็น Long String

จัดรูปแบบวันที่ในรูปแบบยาวเช่น“ 27 มกราคม 2554”

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.