github.com/kubeshop/testkube@v1.17.23/pkg/types/duration.go (about)

     1  package types
     2  
     3  import "time"
     4  
     5  const DefaultDurationFormat = "15:04:05"
     6  const InvalidDurationString = "invalid"
     7  
     8  func FormatDuration(in string) string {
     9  	if in == "" {
    10  		return ""
    11  	}
    12  	duration, err := time.ParseDuration(in)
    13  	if err != nil {
    14  		return InvalidDurationString + " " + err.Error()
    15  	}
    16  
    17  	return FormattedDuration(duration).Format()
    18  }
    19  
    20  func FormatDurationMs(in string) int32 {
    21  	if in == "" {
    22  		return 0
    23  	}
    24  	duration, err := time.ParseDuration(in)
    25  	if err != nil {
    26  		return 0
    27  	}
    28  
    29  	return int32(duration / time.Millisecond)
    30  }
    31  
    32  type FormattedDuration time.Duration
    33  
    34  func (t FormattedDuration) Format(formats ...string) string {
    35  	format := DefaultDurationFormat
    36  	if len(formats) > 0 {
    37  		format = formats[0]
    38  	}
    39  
    40  	z := time.Unix(0, 0).UTC()
    41  	return z.Add(time.Duration(t)).Format(format)
    42  }