mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-14 20:37:55 -05:00
aa5ac36a3e
39a7fac34 Add .hugo_build.lock to .gitignore 920c716a4 fix a typo: to -> two (#1545) 6f0ba9593 Remove godocref from front matter (#1543) 8ec3d5948 remove link to wercker (#1544) b56008719 Delete deployment-with-wercker.md (#1542) e33d29b02 Fix broken links (#1538) 29e9d4c21 Sort commenting systems (#1541) 0b7ea60a7 Delete the news page "HTTP/2 Server Push in Hugo" 6e1515857 Fix quick-start.md (#1525) 62168ab35 Update comments.md (#1535) d92191512 Small typo (#1539) 129c8834a Correct the PostCSS noMap default value (#1534) 6a5b29fcc Add example to index function (#1536) e3dd8c507 Update output-formats.md 0c9321ca0 Remove reference to using LiveReload in production environment 4072d6776 Mod testing 09fabf7d6 Fix typo (#1524) 2fce813c8 Fix grammatical error in quick-start.md (#1523) 45230ab4a Hugo Mod testing 2dd4cd9e7 Update index.md 2c3ed62fd netlify: Bump to 0.88.1 648e2a007 Merge branch 'tempv0.88.1' f216eade1 releaser: Add release notes to /docs for release of 0.88.1 8a7b64d4b Fix typographical errors in 0.88.0 release notes a4bf86300 Release 0.88 738bb8f38 releaser: Add release notes to /docs for release of 0.88.0 8fcf2c55d highlight: Remove some pygments references f2b173de2 HTTPS link c88881c8e Adding link to nginx documentation 6b0a74fe0 Fix typos in docs (#1516) 498b8f0f1 Fix typos in time.Format (#1515) 28723fad6 Fix taxonomy and term examples (#1514) 3ffd00e12 Update front-matter.md 7cc1da82e Fix grammar in 0.86.1 release notes (#1510) 0009c51c3 Update docs helper 7e2f430f4 Update index.md 7857eae7e releaser: Add release notes to /docs for release of 0.87.0 1f08b684b releaser: Add release notes to /docs for release of 0.87.0 36a9e701c docs: Adjust config docs 0f588438e docs: Regen CLI docs 1b4682cd8 docs: Regen docs helper bc8bbaae9 Merge commit 'bd77f6e1c99e04a476f0b1bb4e44569134e02399' into release-0.87.0 6f2480643 docs: Adjust time zone docs git-subtree-dir: docs git-subtree-split: 39a7fac343c289906db644c96079fdcc0298582f
126 lines
3.8 KiB
Markdown
126 lines
3.8 KiB
Markdown
---
|
|
title: .Format
|
|
description: Formats built-in Hugo dates---`.Date`, `.PublishDate`, and `.Lastmod`---according to Go's layout string.
|
|
date: 2017-02-01
|
|
publishdate: 2017-02-01
|
|
lastmod: 2017-02-01
|
|
categories: [functions]
|
|
menu:
|
|
docs:
|
|
parent: "functions"
|
|
keywords: [dates,time]
|
|
signature: [".Format FORMAT"]
|
|
workson: [times]
|
|
hugoversion:
|
|
relatedfuncs: [dateFormat,now,Unix,time]
|
|
deprecated: false
|
|
aliases: []
|
|
toc: true
|
|
---
|
|
|
|
`.Format` will format date values defined in your front matter and can be used as a property on the following [page variables][pagevars]:
|
|
|
|
* `.PublishDate`
|
|
* `.Date`
|
|
* `.Lastmod`
|
|
|
|
Assuming a key-value of `date: 2017-03-03` in a content file's front matter, your can run the date through `.Format` followed by a layout string for your desired output at build time:
|
|
|
|
```
|
|
{{ .PublishDate.Format "January 2, 2006" }} => March 3, 2017
|
|
```
|
|
|
|
For formatting *any* string representations of dates defined in your front matter, see the [`dateFormat` function][dateFormat], which will still leverage the Go layout string explained below but uses a slightly different syntax.
|
|
|
|
## Go's Layout String
|
|
|
|
Hugo templates [format your dates][time] via layout strings that point to a specific reference time:
|
|
|
|
```
|
|
Mon Jan 2 15:04:05 MST 2006
|
|
```
|
|
|
|
While this may seem arbitrary, the numerical value of `MST` is `07`, thus making the layout string a sequence of numbers.
|
|
|
|
Here is a visual explanation [taken directly from the Go docs][gdex]:
|
|
|
|
```
|
|
Jan 2 15:04:05 2006 MST
|
|
=> 1 2 3 4 5 6 -7
|
|
```
|
|
|
|
### Hugo Date and Time Templating Reference
|
|
|
|
The following examples show the layout string followed by the rendered output.
|
|
|
|
The examples were rendered and tested in [CST][] and all point to the same field in a content file's front matter:
|
|
|
|
```
|
|
date: 2017-03-03T14:15:59-06:00
|
|
```
|
|
|
|
`.Date` (i.e. called via [page variable][pagevars])
|
|
: **Returns**: `2017-03-03 14:15:59 -0600 CST`
|
|
|
|
`"Monday, January 2, 2006"`
|
|
: **Returns**: `Friday, March 3, 2017`
|
|
|
|
`"Mon Jan 2 2006"`
|
|
: **Returns**: `Fri Mar 3 2017`
|
|
|
|
`"January 2006"`
|
|
: **Returns**: `March 2017`
|
|
|
|
`"2006-01-02"`
|
|
: **Returns**: `2017-03-03`
|
|
|
|
`"Monday"`
|
|
: **Returns**: `Friday`
|
|
|
|
`"02 Jan 06 15:04 MST"` (RFC822)
|
|
: **Returns**: `03 Mar 17 14:15 CST`
|
|
|
|
`"02 Jan 06 15:04 -0700"` (RFC822Z)
|
|
: **Returns**: `03 Mar 17 14:15 -0600`
|
|
|
|
`"Mon, 02 Jan 2006 15:04:05 MST"` (RFC1123)
|
|
: **Returns**: `Fri, 03 Mar 2017 14:15:59 CST`
|
|
|
|
`"Mon, 02 Jan 2006 15:04:05 -0700"` (RFC1123Z)
|
|
: **Returns**: `Fri, 03 Mar 2017 14:15:59 -0600`
|
|
|
|
More examples can be found in Go's [documentation for the time package][timeconst].
|
|
|
|
### Cardinal Numbers and Ordinal Abbreviations
|
|
|
|
Spelled-out cardinal numbers (e.g. "one", "two", and "three") are not currently supported.
|
|
|
|
Ordinal abbreviations (i.e., with shorted suffixes like "1st", "2nd", and "3rd") are not currently directly supported. By using `{{.Date.Format "Jan 2nd 2006"}}`, Hugo assumes you want to append `nd` as a string to the day of the month. However, you can chain functions together to create something like this:
|
|
|
|
```
|
|
{{ .Date.Format "2" }}{{ if in (slice 1 21 31) .Date.Day}}st{{ else if in (slice 2 22) .Date.Day}}nd{{ else if in (slice 3 23) .Date.Day}}rd{{ else }}th{{ end }} of {{ .Date.Format "January 2006" }}
|
|
```
|
|
|
|
This will output:
|
|
|
|
```
|
|
5th of March 2017
|
|
```
|
|
|
|
|
|
### Use `.Local` and `.UTC`
|
|
|
|
In conjunction with the [`dateFormat` function][dateFormat], you can also convert your dates to `UTC` or to local timezones:
|
|
|
|
`{{ dateFormat "02 Jan 06 15:04 MST" .Date.UTC }}`
|
|
: **Returns**: `03 Mar 17 20:15 UTC`
|
|
|
|
`{{ dateFormat "02 Jan 06 15:04 MST" .Date.Local }}`
|
|
: **Returns**: `03 Mar 17 14:15 CST`
|
|
|
|
[CST]: https://en.wikipedia.org/wiki/Central_Time_Zone
|
|
[dateFormat]: /functions/dateformat/
|
|
[gdex]: https://golang.org/pkg/time/#example_Time_Format
|
|
[pagevars]: /variables/page/
|
|
[time]: https://golang.org/pkg/time/
|
|
[timeconst]: https://golang.org/pkg/time/#ANSIC
|