"2 hours" のような文字列をパースして time.Duration を取得する duration パッケージを作った

Harvest のログ取得期間指定をより柔軟にできるように --duration オプションを追加したかったのですが、

  • 標準の time.ParseDuration() ではあまり柔軟ではない
  • 既存パッケージを探したけれども time.Duration を返すものを見つけられなかった

ので作りました。

github.com

使い方

duration.Parse()time.ParseDuration() と同じように利用できます。

time.ParseDuration() と異なる点は 4hours1minute などの単位表記も判定できるという点です。

package main

import (
    "fmt"

    "github.com/k1LoW/duration"
)

func main() {
    d, _ := duration.Parse("3 days 4 hours")
    fmt.Printf("%s", d)
    // Output: 76h0m0s
}

これだけです。

というわけで

--duration オプションを作りたいときに、ご検討ください。