%PDF- %PDF-
Direktori : /home/waritko/go/src/github.com/odeke-em/go-utils/sexagesimal/ |
Current File : //home/waritko/go/src/github.com/odeke-em/go-utils/sexagesimal/sexagesimal.go |
package sexagesimal import ( "fmt" "strings" ) const ( second = 0 minute = 1 hour = 2 day = 3 ) var positions = map[int]int{ second: 60, minute: 60, hour: 24, day: 7, } func segments(t int) (all []int) { i := 0 for i < len(positions) { base := positions[i] if base == 0 { base = 60 } rem := t % base t /= base all = append(all, rem) if t <= 0 { break } i += 1 } return } func sexag(t int) []string { rev := segments(t) properSeg := make([]string, len(rev)) for i, n := 0, len(rev); i < n; i++ { properSeg[i] = fmt.Sprintf("%02d", rev[n-i-1]) } return properSeg } func Sexag(t int) string { minSegmentLen := 3 segments := sexag(t) for i := len(segments); i < minSegmentLen; i++ { segments = append([]string{"00"}, segments...) } return strings.Join(segments, ":") }