GroupByDate
Syntax
PAGES.GroupByDate LAYOUT [SORT]
Returns
page.PagesGroup
When grouping by date, the value is determined by your site configuration, defaulting to the date
field in front matter.
The layout string has the same format as the layout string for the time.Format
function. The resulting group key is localized for language and region.
For the optional sort order, specify either asc
for ascending order, or desc
for descending order.
To group content by year and month:
{{ range .Pages.GroupByDate "January 2006" }}
<p>{{ .Key }}</p>
<ul>
{{ range .Pages }}
<li><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></li>
{{ end }}
</ul>
{{ end }}
To sort the groups in ascending order:
{{ range .Pages.GroupByDate "January 2006" "asc" }}
<p>{{ .Key }}</p>
<ul>
{{ range .Pages }}
<li><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></li>
{{ end }}
</ul>
{{ end }}
The pages within each group will also be sorted by date, either ascending or descending depending on the grouping option. To sort the pages within each group, use one of the sorting methods. For example, to sort the pages within each group by title:
{{ range .Pages.GroupByDate "January 2006" }}
<p>{{ .Key }}</p>
<ul>
{{ range .Pages.ByTitle }}
<li><a href="{{ .RelPermalink }}">{{ .Title }}</a></li>
{{ end }}
</ul>
{{ end }}
Layout string
Format a time.Time
value based on Go’s reference time:
Mon Jan 2 15:04:05 MST 2006
Create a layout string using these components:
Description | Valid components |
---|---|
Year | "2006" "06" |
Month | "Jan" "January" "01" "1" |
Day of the week | "Mon" "Monday" |
Day of the month | "2" "_2" "02" |
Day of the year | "__2" "002" |
Hour | "15" "3" "03" |
Minute | "4" "04" |
Second | "5" "05" |
AM/PM mark | "PM" |
Time zone offsets | "-0700" "-07:00" "-07" "-070000" "-07:00:00" |
Replace the sign in the layout string with a Z to print Z instead of an offset for the UTC zone.
Description | Valid components |
---|---|
Time zone offsets | "Z0700" "Z07:00" "Z07" "Z070000" "Z07:00:00" |
{{ $t := "2023-01-27T23:44:58-08:00" }}
{{ $t = time.AsTime $t }}
{{ $t = $t.Format "Jan 02, 2006 3:04 PM Z07:00" }}
{{ $t }} → Jan 27, 2023 11:44 PM -08:00
Strings such as PST
and CET
are not time zones. They are time zone abbreviations.
Strings such as -07:00
and +01:00
are not time zones. They are time zone offsets.
A time zone is a geographic area with the same local time. For example, the time zone abbreviated by PST
and PDT
(depending on Daylight Savings Time) is America/Los_Angeles
.