HUGO
Menu
GitHub 88139 stars Mastodon

time.Format

Returns the given date/time as a formatted and localized string.

Syntax

time.Format LAYOUT INPUT

Returns

string

Alias

dateFormat

Use the time.Format function with time.Time values:

{{ $t := time.AsTime "2023-10-15T13:18:50-07:00" }}
{{ time.Format "2 Jan 2006" $t }} → 15 Oct 2023

Or use time.Format with a parsable string representation of a date/time value:

{{ $t := "15 Oct 2023" }}
{{ time.Format "January 2, 2006" $t }} → October 15, 2023

Examples of parsable string representations:

FormatTime zone
2023-10-15T13:18:50-07:00America/Los_Angeles
2023-10-15T13:18:50-0700America/Los_Angeles
2023-10-15T13:18:50ZEtc/UTC
2023-10-15T13:18:50Default is Etc/UTC
2023-10-15Default is Etc/UTC
15 Oct 2023Default is Etc/UTC

The last three examples are not fully qualified, and default to the Etc/UTC time zone.

To override the default time zone, set the timeZone in your project configuration. The order of precedence for determining the time zone is:

  1. The time zone offset in the date/time string
  2. The time zone specified in your project configuration
  3. The Etc/UTC time zone

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.

Localization

Use the time.Format function to localize time.Time values for the current language and region.

Localization of dates, currencies, numbers, and percentages is performed by the bep/golocales package. Hugo determines the locale using the locale configuration setting, falling back to the language key itself. The resolved value must be a locale supported by the package.

Use the layout string as described above, or one of the tokens below. For example:

{{ .Date | time.Format ":date_medium" }} → Jan 27, 2023

Localized to en-US:

TokenResult
:date_fullFriday, January 27, 2023
:date_longJanuary 27, 2023
:date_mediumJan 27, 2023
:date_short1/27/23
:time_full11:44:58 pm Pacific Standard Time
:time_long11:44:58 pm PST
:time_medium11:44:58 pm
:time_short11:44 pm

Localized to de-DE:

TokenResult
:date_fullFreitag, 27. Januar 2023
:date_long27. Januar 2023
:date_medium27.01.2023
:date_short27.01.23
:time_full23:44:58 Nordamerikanische Westküsten-Normalzeit
:time_long23:44:58 PST
:time_medium23:44:58
:time_short23:44