Skip to content

Instantly share code, notes, and snippets.

@michelson
Created July 17, 2014 20:33
Show Gist options
  • Save michelson/708c45269381040c441c to your computer and use it in GitHub Desktop.
Save michelson/708c45269381040c441c to your computer and use it in GitHub Desktop.
parse time string like 1.minutes, 2.minutes , 3.hours , 3.hrs
package main
import(
"time"
"strings"
"strconv"
"fmt"
"errors"
)
func TimeParse(input string) (time.Duration, error) {
parts := strings.Split(input, ".")
var tt time.Duration
if len(parts) != 2 {
return tt, errors.New("can't split values")
}
multiplier, err := strconv.Atoi(parts[0])
if err != nil {
return tt, errors.New("can't convert multipler to integer")
}
switch parts[1] {
case "seconds", "second", "secs", "s":
tt = time.Second * time.Duration(multiplier)
case "minutes", "minute", "min", "mins":
tt = time.Minute * time.Duration(multiplier)
case "hours", "hour", "h", "hrs", "hr":
tt = time.Hour * time.Duration(multiplier)
default:
return tt, errors.New("can't find duration type")
}
return tt, nil
}
func main(){
fmt.Println(TimeParse("1.seconds"))
fmt.Println(TimeParse("1.hours"))
fmt.Println(TimeParse("1.minutes"))
fmt.Println(TimeParse("ccc.minutes"))
fmt.Println(TimeParse("12.sparks"))
fmt.Println(TimeParse("1,minutes"))
}
@michelson
Copy link
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment