This commit is contained in:
u80864958 2025-01-06 13:34:57 +01:00
parent a59a870d7c
commit 7520f1d57d
2 changed files with 50 additions and 0 deletions

3
go.mod Normal file
View File

@ -0,0 +1,3 @@
module git.schreifuchs.ch/schreifuchs/worktime
go 1.22.5

47
main.go Normal file
View File

@ -0,0 +1,47 @@
package main
import (
"flag"
"fmt"
"time"
)
const (
defaultFormat = "15:04"
defaultGoal = "8.3h"
)
func main() {
format := flag.String("f", defaultFormat, "Set the input time format ")
goalS := flag.String("g", defaultGoal, "Set the duration goal ")
flag.Parse()
goal, err := time.ParseDuration(*goalS)
if err != nil {
fmt.Printf("Error parsing \"%s\": %v", *goalS, err)
eight := 8.3 * float64(time.Hour)
goal = time.Duration(eight)
}
acc := time.Second * 0
for i, arg := range flag.Args() {
t, err := time.Parse(*format, arg)
if err != nil {
fmt.Printf("Error parsing \"%s\": %v", arg, err)
continue
}
dur := time.Hour*time.Duration(t.Hour()) + time.Minute*time.Duration(t.Minute())
if i%2 == 0 {
acc -= dur
} else {
acc += dur
}
}
if len(flag.Args())%2 != 0 {
diff := goal - acc
fmt.Printf("You reached your goal of %v at: %s\n", goal, time.Time{}.Add(diff).Format(*format))
} else {
fmt.Printf("With these hour's you have worked: %v\n", acc)
}
}