HUGO
News Docs Themes Community GitHub

Format

Returns a textual representation of the time.Time value formatted according to the layout string.

Syntax

TIME.Format LAYOUT

Returns

string
{{ $t := "2023-01-27T23:44:58-08:00" }}
{{ $t = time.AsTime $t }}
{{ $format := "2 Jan 2006" }}

{{ $t.Format $format }} → 27 Jan 2023

To localize the return value, use the time.Format function instead.

Use the Format method with any time.Time value, including the four predefined front matter dates:

{{ $format := "2 Jan 2006" }}

{{ .Date.Format $format }}
{{ .PublishDate.Format $format }}
{{ .ExpiryDate.Format $format }}
{{ .Lastmod.Format $format }}

Use the time.Format function to format string representations of dates, and to format raw TOML dates that exclude time and time zone offset.

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.

Examples

Given this front matter:

---
date: 2023-01-27T23:44:58-08:00
title: About time
---
+++
date = 2023-01-27T23:44:58-08:00
title = 'About time'
+++
{
   "date": "2023-01-27T23:44:58-08:00",
   "title": "About time"
}

The examples below were rendered in the America/Los_Angeles time zone:

Format stringResult
Monday, January 2, 2006Friday, January 27, 2023
Mon Jan 2 2006Fri Jan 27 2023
January 2006January 2023
2006-01-022023-01-27
MondayFriday
02 Jan 06 15:04 MST27 Jan 23 23:44 PST
Mon, 02 Jan 2006 15:04:05 MSTFri, 27 Jan 2023 23:44:58 PST
Mon, 02 Jan 2006 15:04:05 -0700Fri, 27 Jan 2023 23:44:58 -0800

UTC and local time

Convert and format any time.Time value to either Coordinated Universal Time (UTC) or local time.

{{ $t := "2023-01-27T23:44:58-08:00" }}
{{ $t = time.AsTime $t }}
{{ $format := "2 Jan 2006 3:04:05 PM MST" }}

{{ $t.UTC.Format $format }} → 28 Jan 2023 7:44:58 AM UTC
{{ $t.Local.Format $format }} → 27 Jan 2023 11:44:58 PM PST

Ordinal representation

Use the humanize function to render the day of the month as an ordinal number:

{{ $t := "2023-01-27T23:44:58-08:00" }}
{{ $t = time.AsTime $t }}

{{ humanize $t.Day }} of {{ $t.Format "January 2006" }} → 27th of January 2023