mirror of
https://github.com/Xevion/go-ha.git
synced 2025-12-06 01:15:10 -06:00
31 lines
747 B
Go
31 lines
747 B
Go
package internal
|
|
|
|
import (
|
|
"fmt"
|
|
"log/slog"
|
|
"time"
|
|
|
|
"github.com/dromara/carbon/v2"
|
|
)
|
|
|
|
// ParseTime parses a HH:MM string.
|
|
func ParseTime(s string) *carbon.Carbon {
|
|
t, err := time.Parse("15:04", s)
|
|
if err != nil {
|
|
parsingErr := fmt.Errorf("failed to parse time string \"%s\"; format must be HH:MM: %w", s, err)
|
|
slog.Error(parsingErr.Error())
|
|
panic(parsingErr)
|
|
}
|
|
return carbon.Now().SetTimeMilli(t.Hour(), t.Minute(), 0, 0)
|
|
}
|
|
|
|
func ParseDuration(s string) time.Duration {
|
|
d, err := time.ParseDuration(s)
|
|
if err != nil {
|
|
parsingErr := fmt.Errorf("couldn't parse string duration: \"%s\"; see https://pkg.go.dev/time#ParseDuration for valid time units: %w", s, err)
|
|
slog.Error(parsingErr.Error())
|
|
panic(parsingErr)
|
|
}
|
|
return d
|
|
}
|