From: Thomas Karpiniec Date: Wed, 28 May 2025 12:31:33 +0000 (+1000) Subject: Handle timestamps with no seconds cleanly X-Git-Tag: v1.1.0~1 X-Git-Url: https://code.octet-stream.net/broadcaster/commitdiff_plain/abff2fe6f304da8f632c88d6d66c3304ecb6a7b5 Handle timestamps with no seconds cleanly --- diff --git a/internal/protocol/protocol.go b/internal/protocol/protocol.go index 7b0a119..f8b420b 100644 --- a/internal/protocol/protocol.go +++ b/internal/protocol/protocol.go @@ -7,8 +7,9 @@ import ( ) const ( - StartTimeFormat = "2006-01-02T15:04:05" - LocalTimeFormat = "Mon _2 Jan 2006 15:04:05" + StartTimeFormat = "2006-01-02T15:04" + StartTimeFormatSecs = "2006-01-02T15:04:05" + LocalTimeFormat = "Mon _2 Jan 2006 15:04:05" // Radio to server diff --git a/radio/main.go b/radio/main.go index 22658a3..85d15b1 100644 --- a/radio/main.go +++ b/radio/main.go @@ -227,7 +227,10 @@ func playlistWorker(ch <-chan []protocol.PlaylistSpec, stop <-chan bool) { } var soonestTime time.Time for _, v := range specs { - t, err := time.ParseInLocation(protocol.StartTimeFormat, v.StartTime, loc) + t, err := time.ParseInLocation(protocol.StartTimeFormatSecs, v.StartTime, loc) + if err != nil { + t, err = time.ParseInLocation(protocol.StartTimeFormat, v.StartTime, loc) + } if err != nil { log.Println("Error parsing start time", err) continue diff --git a/server/main.go b/server/main.go index ca92168..363b708 100644 --- a/server/main.go +++ b/server/main.go @@ -15,12 +15,12 @@ import ( "strings" "time" + "code.octet-stream.net/broadcaster/internal/protocol" "golang.org/x/crypto/bcrypt" "golang.org/x/net/websocket" ) const version = "v1.1.0" -const formatString = "2006-01-02T15:04:05" //go:embed templates/* var content embed.FS @@ -519,7 +519,7 @@ func editPlaylistPage(w http.ResponseWriter, r *http.Request, id int, user User) if id == 0 { data.Playlist.Enabled = true data.Playlist.Name = "New Playlist" - data.Playlist.StartTime = time.Now().Format(formatString) + data.Playlist.StartTime = time.Now().Format(protocol.StartTimeFormatSecs) data.Entries = append(data.Entries, PlaylistEntry{}) } else { playlist, err := db.GetPlaylist(id) @@ -544,7 +544,10 @@ func submitPlaylist(w http.ResponseWriter, r *http.Request) { if err != nil { return } - _, err = time.Parse(formatString, r.Form.Get("playlistStartTime")) + _, err = time.Parse(protocol.StartTimeFormatSecs, r.Form.Get("playlistStartTime")) + if err != nil { + _, err = time.Parse(protocol.StartTimeFormat, r.Form.Get("playlistStartTime")) + } if err != nil { return }