timeutil

package
v0.68.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 16, 2026 License: MIT Imports: 3 Imported by: 0

README

timeutil Package

The timeutil package provides human-readable duration formatting utilities.

Overview

This package contains helpers for converting time.Duration values and raw numeric durations (milliseconds, nanoseconds) into compact, readable strings. The primary formatting style follows the debug npm package conventions used by the logger package.

Functions

FormatDuration(d time.Duration) string

Formats a time.Duration for display. Provides granular output from nanoseconds to hours.

Range Example output
< 1µs "500ns"
1µs – < 1ms "250µs"
1ms – < 1s "750ms"
1s – < 1min "2.5s"
1min – < 1h "1.3m"
≥ 1h "2.0h"
import "github.com/github/gh-aw/pkg/timeutil"

timeutil.FormatDuration(500 * time.Millisecond)  // "500ms"
timeutil.FormatDuration(2500 * time.Millisecond) // "2.5s"
timeutil.FormatDuration(90 * time.Second)        // "1.5m"
FormatDurationMs(ms int) string

Formats a duration given in milliseconds as a human-readable string.

Range Example
< 1000ms "500ms"
1000ms – < 60s "1.5s"
≥ 60s "1m30s"
timeutil.FormatDurationMs(500)   // "500ms"
timeutil.FormatDurationMs(1500)  // "1.5s"
timeutil.FormatDurationMs(90000) // "1m30s"
FormatDurationNs(ns int64) string

Formats a duration given in nanoseconds as a human-readable string. Returns "—" for zero or negative values. Uses Go's standard time.Duration.Round(time.Second) for output.

timeutil.FormatDurationNs(0)              // "—"
timeutil.FormatDurationNs(2_500_000_000)  // "2s"
timeutil.FormatDurationNs(90_000_000_000) // "1m30s"

Design Notes

  • FormatDuration is used by the logger package to display time-diff between consecutive log calls (the +500ms suffix in debug output).
  • FormatDurationMs is used for workflow run duration display, where GitHub Actions reports durations in milliseconds.
  • FormatDurationNs is used for job duration display, where GitHub Actions reports billing durations in nanoseconds.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func FormatDuration

func FormatDuration(d time.Duration) string

FormatDuration formats a duration for display like the debug npm package. It provides granular formatting from nanoseconds to hours.

func FormatDurationMs added in v0.65.6

func FormatDurationMs(ms int) string

FormatDurationMs formats a duration given in milliseconds as a human-readable string. Examples: 500 -> "500ms", 1500 -> "1.5s", 90000 -> "1m30s"

func FormatDurationNs added in v0.65.6

func FormatDurationNs(ns int64) string

FormatDurationNs formats a duration given in nanoseconds as a human-readable string. Returns "—" for zero or negative values. Uses Go's standard duration rounding to seconds.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL