HUGO
News Docs Themes Community GitHub

GroupByDate

Returns the given page collection grouped by date in descending order.

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:

DescriptionValid 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.

DescriptionValid 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.