durafmt icon indicating copy to clipboard operation
durafmt copied to clipboard

Limit to adjacent time units

Open alexjurkiewicz opened this issue 2 years ago • 0 comments

I'd like a way to limit duration strings to the first N adjacent time units.

Existing behaviour:

package main

import (
	"fmt"
	"time"

	"github.com/hako/durafmt"
)

func main() {
	duration := durafmt.Parse(2*time.Hour + 58*time.Second).LimitFirstN(2).String()
	fmt.Println(duration)
}

This returns 2 hours 58 seconds.

I don't love this behaviour because the "58 seconds" part is not important and should be truncated. But if I had 58 minutes, that would be important.

Desired behaviour:

	duration := durafmt.Parse(2*time.Hour + 58*time.Second).LimitFirstAdjacentN(2).String()

Would return 2 hours.

	duration := durafmt.Parse(2*time.Hour + 15*time.Minute).LimitFirstAdjacentN(2).String()

Would return 2 hours 15 minutes.

alexjurkiewicz avatar Sep 21 '22 01:09 alexjurkiewicz