time.go 856 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. // SPDX-FileCopyrightText: Adam Evyčędo
  2. //
  3. // SPDX-License-Identifier: AGPL-3.0-or-later
  4. package traffic
  5. import (
  6. "fmt"
  7. "strconv"
  8. "strings"
  9. )
  10. func parseDepartureTime(departureTime string) (int, error) {
  11. hms := strings.Split(departureTime, ":")
  12. h, err := strconv.ParseInt(hms[0], 10, 0)
  13. if err != nil {
  14. return 0, fmt.Errorf("while parsing hour: %w", err)
  15. }
  16. m, err := strconv.ParseInt(hms[1], 10, 0)
  17. if err != nil {
  18. return 0, fmt.Errorf("while parsing minutes: %w", err)
  19. }
  20. s, err := strconv.ParseInt(hms[2], 10, 0)
  21. if err != nil {
  22. return 0, fmt.Errorf("while parsing seconds: %w", err)
  23. }
  24. return int(s + m*60 + h*3600), nil
  25. }
  26. func formatDepartureTime(secondsAfterMidnight int) string {
  27. h := secondsAfterMidnight / 3600
  28. ms := secondsAfterMidnight % 3600
  29. m := ms / 60
  30. s := ms % 60
  31. return fmt.Sprintf("%02d:%02d:%02d", h, m, s)
  32. }