2016-07-14 23:59:20 +02:00
|
|
|
# Humane Units [![Build Status](https://travis-ci.org/dustin/go-humanize.svg?branch=master)](https://travis-ci.org/dustin/go-humanize) [![GoDoc](https://godoc.org/github.com/dustin/go-humanize?status.svg)](https://godoc.org/github.com/dustin/go-humanize)
|
2015-04-09 03:02:03 +02:00
|
|
|
|
|
|
|
Just a few functions for helping humanize times and sizes.
|
|
|
|
|
|
|
|
`go get` it as `github.com/dustin/go-humanize`, import it as
|
|
|
|
`"github.com/dustin/go-humanize"`, use it as `humanize`
|
|
|
|
|
2015-08-13 04:24:31 +02:00
|
|
|
See [godoc](https://godoc.org/github.com/dustin/go-humanize) for
|
|
|
|
complete documentation.
|
|
|
|
|
2015-04-09 03:02:03 +02:00
|
|
|
## Sizes
|
|
|
|
|
|
|
|
This lets you take numbers like `82854982` and convert them to useful
|
|
|
|
strings like, `83MB` or `79MiB` (whichever you prefer).
|
|
|
|
|
|
|
|
Example:
|
|
|
|
|
2016-07-14 23:59:20 +02:00
|
|
|
```go
|
|
|
|
fmt.Printf("That file is %s.", humanize.Bytes(82854982))
|
|
|
|
```
|
2015-04-09 03:02:03 +02:00
|
|
|
|
|
|
|
## Times
|
|
|
|
|
|
|
|
This lets you take a `time.Time` and spit it out in relative terms.
|
|
|
|
For example, `12 seconds ago` or `3 days from now`.
|
|
|
|
|
|
|
|
Example:
|
|
|
|
|
2016-07-14 23:59:20 +02:00
|
|
|
```go
|
|
|
|
fmt.Printf("This was touched %s", humanize.Time(someTimeInstance))
|
|
|
|
```
|
2015-04-09 03:02:03 +02:00
|
|
|
|
|
|
|
Thanks to Kyle Lemons for the time implementation from an IRC
|
|
|
|
conversation one day. It's pretty neat.
|
|
|
|
|
|
|
|
## Ordinals
|
|
|
|
|
|
|
|
From a [mailing list discussion][odisc] where a user wanted to be able
|
|
|
|
to label ordinals.
|
|
|
|
|
|
|
|
0 -> 0th
|
|
|
|
1 -> 1st
|
|
|
|
2 -> 2nd
|
|
|
|
3 -> 3rd
|
|
|
|
4 -> 4th
|
|
|
|
[...]
|
|
|
|
|
|
|
|
Example:
|
|
|
|
|
2016-07-14 23:59:20 +02:00
|
|
|
```go
|
|
|
|
fmt.Printf("You're my %s best friend.", humanize.Ordinal(193))
|
|
|
|
```
|
2015-04-09 03:02:03 +02:00
|
|
|
|
|
|
|
## Commas
|
|
|
|
|
|
|
|
Want to shove commas into numbers? Be my guest.
|
|
|
|
|
|
|
|
0 -> 0
|
|
|
|
100 -> 100
|
|
|
|
1000 -> 1,000
|
|
|
|
1000000000 -> 1,000,000,000
|
|
|
|
-100000 -> -100,000
|
|
|
|
|
|
|
|
Example:
|
|
|
|
|
2016-07-14 23:59:20 +02:00
|
|
|
```go
|
|
|
|
fmt.Printf("You owe $%s.\n", humanize.Comma(6582491))
|
|
|
|
```
|
2015-04-09 03:02:03 +02:00
|
|
|
|
|
|
|
## Ftoa
|
|
|
|
|
|
|
|
Nicer float64 formatter that removes trailing zeros.
|
|
|
|
|
2016-07-14 23:59:20 +02:00
|
|
|
```go
|
|
|
|
fmt.Printf("%f", 2.24) // 2.240000
|
|
|
|
fmt.Printf("%s", humanize.Ftoa(2.24)) // 2.24
|
|
|
|
fmt.Printf("%f", 2.0) // 2.000000
|
|
|
|
fmt.Printf("%s", humanize.Ftoa(2.0)) // 2
|
|
|
|
```
|
2015-04-09 03:02:03 +02:00
|
|
|
|
|
|
|
## SI notation
|
|
|
|
|
|
|
|
Format numbers with [SI notation][sinotation].
|
|
|
|
|
|
|
|
Example:
|
|
|
|
|
2016-07-14 23:59:20 +02:00
|
|
|
```go
|
|
|
|
humanize.SI(0.00000000223, "M") // 2.23nM
|
|
|
|
```
|
2015-04-09 03:02:03 +02:00
|
|
|
|
|
|
|
[odisc]: https://groups.google.com/d/topic/golang-nuts/l8NhI74jl-4/discussion
|
|
|
|
[sinotation]: http://en.wikipedia.org/wiki/Metric_prefix
|