読者です 読者をやめる 読者になる 読者になる

Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

go-humanizeで序数や単位、日付差分を人間が読みやすい形に

go-humanizeで序数や単位、日付差分を人間が読みやすい形にできます。
以前紹介した、RailsのActive_supportのようなものです。
shuzo-kino.hateblo.jp

実際のところ

数値の切り替えサンプルは以下の通り。

package main

import (
	"fmt"
	"github.com/dustin/go-humanize"
)

func main() {
	// Result:: 83 MB.
	fmt.Printf(
		"%v MB.\n",
		humanize.Bytes(82854982),
	)

	// Result:: 79 MiB.
	fmt.Printf(
		"%v MiB.\n",
		humanize.IBytes(82854982),
	)

	// Result:: 82,854.
	fmt.Printf(
		"%v.\n",
		humanize.Comma(82854),
	)

	// Result:: 82854nd.
	fmt.Printf(
		"%v.\n",
		humanize.Ordinal(82854),
	)

}

実行結果はこんな感じに。

$ go run gohumanize.go 
83 MB MB.
79 MiB MiB.
82,854.
82854th.

日付は引数で与えたデータと現時刻の差分をとるタイプです。
こんな感じ

// time.go の 19行目

// Time formats a time into a relative string.
//
// Time(someT) -> "3 weeks ago"
func Time(then time.Time) string {
	return RelTime(then, time.Now(), "ago", "from now")
}

参考もと

godoc.org
github.com