convert 12 hour format to 24 hour format time in golang
For example,
package main
import (
"fmt"
"time"
)
func main() {
layout1 := "03:04:05PM"
layout2 := "15:04:05"
t, err := time.Parse(layout1, "07:05:45PM")
if err != nil {
fmt.Println(err)
return
}
fmt.Println(t.Format(layout1))
fmt.Println(t.Format(layout2))
}
Playground: https://play.golang.org/p/Ypn2-lEF_Zs
Output:
07:05:45PM
19:05:45
Reference: package time
The key is to understand how to write the layout
argument. According to godoc, the reference time for layout
is:
Mon Jan 2 15:04:05 -0700 MST 2006
Each string element of a date has a specific numerical value relevant to it:
String | Represents |
---|---|
1 or 01 or Jan | month |
2 or 02 | day of month |
3 or 03 or 15 | hour |
4 or 04 | minute |
5 or 05 | second |
6 or 06 or 2006 | year |
-0700 or MST | timezone representation |
PM | period of day |
You need to rewrite this date to your format as the layout for parse. You only need to include the elements to your need. So only the hour, minute, second and AM/PM is important. Reference time 15:04:05
should be written as 03:04:05PM
.
Just use the rewritten time as the layout parameter:
import time
...
t, _ := time.Parse("03:04:05PM", "07:05:45PM")
fmt.Println(t.Format("15:04:05"))
Output:
19:05:45