Time

The Time registry provides tools to manage and manipulate dates, times, and time-related calculations, making it easy to handle time-based data in your projects.

You can easily import all the functions from the time registry by including the following import statement in your code

import "github.com/go-sprout/sprout/registry/time"

date

The function formats a given date or the current time into a specified format string.

Signature

 Date(fmt string, date any) string

Must version

{{ "2023-05-04T15:04:05Z" | date "Jan 2, 2006" }} // Output: "May 4, 2023"

dateInZone

The function formats a given date or the current time into a specified format string for a specified timezone.

Signature

DateInZone(fmt string, date any, zone string) string

Must version

{{ dateInZone "Jan 2, 2006", "2023-05-04T15:04:05Z", "UTC" }} // Output: "May 4, 2023"

duration

The function converts a given number of seconds into a human-readable duration string.

Signature

Duration(sec any) string

Must version

{{ 3661 | duration }} // Output: "1h1m1s"

dateAgo

The function calculates the time elapsed since a given date.

Signature

DateAgo(date any) string

Must version

{{ "2023-05-04T15:04:05Z" | dateAgo }} // Output: "4m"

dateAgo can receive multiples input types like:

  • time.Time object (object or pointer)

  • int, int32, int64 converted as Unix

now

The function returns the current time.

Signature

Now() time.Time

Must version

{{ now }} // Output: "2023-05-07T15:04:05Z"

unixEpoch

The function returns the Unix epoch timestamp for a given date.

Signature

UnixEpoch(date time.Time) string

Must version

{{ now | unixEpoch }} // Output: "1683306245"

dateModify / mustDateModify

The function adjusts a given date by a specified duration, returning the modified date. If the duration format is incorrect, it returns the original date without any changes, in case of must version, an error are returned.

Signature

DateModify(fmt string, date time.Time) time.Time
MustDateModify(fmt string, date time.Time) (time.Time, error)

Must version

{{ "2024-05-04T15:04:05Z" | dateModify "48h" }} // Outputs the date two days later

durationRound

The function rounds a duration to the nearest significant time unit, such as years or seconds.

Signature

DurationRound(duration any) string

Must version

{{ "9600h" | durationRound }} // Output: "1y"
{{ "960h" | durationRound }} // Output: "1mo"
{{ "192h" | durationRound }} // Output: "8d"
{{ "3600s" | durationRound }} // Output: "1h"
{{ "300s" | durationRound }} // Output: "5m"
{{ "61s" | durationRound }} // Output: "1m"
{{ "59s" | durationRound }} // Output: "59s"

htmlDate

The function formats a date into the standard HTML date format (YYYY-MM-DD).

Signature

HtmlDate(date any) string

Must version

{{ "2023-05-04T15:04:05Z" | htmlDate }} // Output: "2023-05-04"

This basically call dateInZone("2006-01-02", date, "Local")

htmlDateInZone

The function formats a date into the standard HTML date format (YYYY-MM-DD) based on a specified timezone.

Signature

HtmlDateInZone(date any, zone string) string

Must version

{{ "2023-05-04T15:04:05Z", "UTC" | htmlDateInZone }} // Output: "2023-05-04"

This basically call dateInZone("2006-01-02", date, zone)

Last updated

#18: v0.5 loaders with handlers and registries

Change request updated