Định dạng ngày Jekyll hoạt động như thế nào?


92

Tôi đang sử dụng Jekyll để tạo một trang web đơn giản.

Tôi muốn trường ngày hiển thị ở định dạng 12 September 2011.

Tôi đã tìm thấy, thông qua một số googling sáng tạo, một chút thao tác định dạng ngày tháng, nhưng dường như không có gì giúp tôi có được tên tháng. Những gì tôi có là {{ page.date| date: "%m-%d-%Y" }}giúp tôi có được đầu ra 09-12-2011, nhưng không hoàn toàn là thứ tôi đang tìm kiếm.

Có cách nào để lấy tháng làm tên trong Jekyll không?

Hoặc, chặn điều đó, có tài liệu nào cho thuộc tính ngày tháng không?


Thú vị bộ lọc date_to_stringdate_to_xmlschema(Xem jekyllrb.com/docs/templates )
Martin Thoma

Hầu hết định dạng tài liệu ngày tháng đầy đủ Jekyll / ngày lỏng tôi có thể tìm thấy: alanwsmith.com/jekyll-liquid-date-formatting-examples
joce

Câu trả lời:


162

Giải pháp

Bộ lọc đầu ra này:

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

tạo ra các ngày có định dạng như sau:

9 September 2013

Hãy chắc chắn không bỏ lỡ dấu trừ ( -) ở phía trước %-dcho ngày. Nếu không có nó, các số dưới mười sẽ có các số 0 ở đầu (ví dụ 09 September 2013).

Thông tin chi tiết về các mã thông báo định dạng ngày riêng lẻ có thể được tìm thấy trên trang tài liệu "Thẻ đầu ra và bộ lọc" lỏng .

Thêm thông tin

Tôi đã tập hợp một tập hợp lớn các ví dụ về định dạng ngày Jekyll . Nó cung cấp các ví dụ cho một số định dạng và phải cung cấp đủ chi tiết để định dạng theo bất kỳ cách nào bạn muốn. Một số ví dụ bao gồm:

  • 2013-09-23
  • Ngày 23 tháng 9 năm 2013
  • Ngày 23 tháng 9 năm 2013
  • 4 Juli 2013 (tức là đổi tên sang các ngôn ngữ khác như "Juli" thay vì "July").

Thưởng thức!


Có thể lấy nó để định dạng ở định dạng NNXX, tức là 1, 2, 3, v.v.?
Ian

@Ian - Tôi không thấy có cách nào để thực hiện "1", "2", v.v. với các định dạng ngày Liquid. Có thể có một số logic bổ sung được đưa vào. Hãy đăng một câu hỏi khác cho vấn đề đó cụ thể và xem liệu ai đó có biết cách làm không.
Alan W. Smith

@Ian - Tôi đã đăng một câu trả lời khác ở đây để giải quyết câu hỏi thứ 1, thứ 2, thứ 3. Tôi cũng đang cập nhật câu trả lời của mình để trỏ đến một tập hợp các đoạn trích định dạng ngày tham chiếu.
Alan W. Smith

Không sử dụng plus: '0'. Sử dụng: {{ page.date | date: "%-m-%d-%Y" }}. Chú ý dấu nối giữa %và m: %-m.
Nowaker

1
@DamianNowak - Cảm ơn bạn đã sử dụng con trỏ %-m. Nó sạch hơn nhiều. Tôi đã cập nhật câu trả lời để phản ánh điều đó và sẽ cập nhật bài đăng tham khảo của tôi sớm nhất có thể.
Alan W. Smith

14

Jekyll thêm phần mở rộng bộ lọc cho chất lỏng. Xem tại đây . Bạn có thể hiển thị định dạng ngày mong muốn của mình bằng cách chạy date_to_long_stringbộ lọc.

Từ liên kết:


Ngày thành chuỗi dài

Định dạng ngày ở định dạng dài, ví dụ: “27 tháng 1 năm 2011”.

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


4

Jekyll 3.8 hỗ trợ ngày thứ tự ra khỏi hộp. Để xuất tháng, hãy sử dụng một trong những thứ này.

{{ page.date | date_to_long_string: "ordinal", "US" }}sẽ xuất ra April 24th, 2018.

{{ page.date | date_to_string: "ordinal", "US" }}sẽ xuất ra Apr 24th, 2018.

{{ page.date | date_to_long_string: "ordinal" }}sẽ xuất ra 24th April 2018.

{{ page.date | date_to_string: "ordinal" }}sẽ xuất ra 24th Apr 2018.


3

Hãy thử '% B' có nghĩa là "Tên tháng đầy đủ (` `tháng 1 '')"

tìm kiếm tài liệu cho strftime, hàm thường được sử dụng để chuyển đổi ngày tháng thành chuỗi.


2

Chỉ trong trường hợp bạn muốn một giải pháp tùy chỉnh, bạn có thể viết một plugin Jekyll để định dạng một ngày như bạn muốn, như thế này (ví dụ này dành cho các ngày ở Ý):

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)

Chỉ cần lưu tệp này vào một tệp giống như _plugins/italian_dates.rbvà sử dụng nó khi bạn cần trong các mẫu:

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

2

Sử dụng {{ page.date| date: "%d %B %Y" }}cho các ngày như ngày 12 tháng 9 năm 2011 , hãy tham khảo hướng dẫn định dạng nhanh và đẹp trên Định dạng ngày Jekyll

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.