Home > Net >  Calculate the Closest Time Difference in HH:MM(am/pm) Format using Go
Calculate the Closest Time Difference in HH:MM(am/pm) Format using Go

Time:09-22

I got a bit problem when calculating the time difference from PM to AM or vice versa. For instance:

ref, _ := time.Parse("03:04pm", "11:59pm")
t, _ := time.Parse("03:04am", "12:00am")

fmt.Println(t.Sub(ref).Minutes()) // Got -719, my expectation is 1 (minutes)

Actually that's true, but I want to get the smallest difference.

CodePudding user response:

The reason you got -719 is that you do not provide date information and in second time.Parse you have typo in template. Template has to contain pm

time.Parse("03:04pm", "11:59pm") // 0000-01-01 23:59:00  0000 UTC
time.Parse("03:04am", "12:00am") // 0000-01-01 12:00:00  0000 UTC

You need to provide day information and pm in template

time.Parse("02 03:04pm", "01 11:59pm") // 0000-01-01 23:59:00  0000 UTC
time.Parse("02 03:04pm", "02 12:00am") // 0000-01-02 00:00:00  0000 UTC

see https://stackoverflow.com/a/20234207/12301864

  •  Tags:  
  • go
  • Related