英文:
The time is different before and after parsing with time.Parse
问题
我需要接收一个时间字符串,解析它,然后再次将其呈现为字符串:
package main
import ("fmt"; "time")
func main() {
const timeLayout = "Mon, Jan 2, 2006 15:04 PM"
sourceTime := "Mon, Apr 7, 2025 7:36 PM"
myTime, err := time.Parse(timeLayout, sourceTime)
if err != nil { panic(err) }
fmt.Printf("\t\tsourceTime = \"%s\"\n myTime.Format(timeLayout) = \"%s\"\n",
sourceTime, myTime.Format(timeLayout))
}
这是我期望的输出:
sourceTime = "Mon, Apr 7, 2025 7:36 PM"
myTime.Format(timeLayout) = "Mon, Apr 7, 2025 7:36 PM"
但我收到了这个奇怪的输出:
sourceTime = "Mon, Apr 7, 2025 7:36 PM"
myTime.Format(timeLayout) = "Mon, Apr 7, 2025 19:36 PM"
我没有改变变量中的任何内容,为什么我得到了相同布局的不同结果?我不应该改变这个时间布局。但我需要再次接收源字符串作为结果。
英文:
I need to receive a time as a string, parse it and then present it as a string again:
package main
import ("fmt"; "time")
func main() {
const timeLayout = "Mon, Jan 2, 2006 15:04 PM"
sourceTime := "Mon, Apr 7, 2025 7:36 PM"
myTime, err := time.Parse(timeLayout, sourceTime)
if err != nil { panic(err) }
fmt.Printf("\t\tsourceTime = \"%s\"\n myTime.Format(timeLayout) = \"%s\"\n",
sourceTime, myTime.Format(timeLayout))
}
It was my expected output:
sourceTime = "Mon, Apr 7, 2025 7:36 PM"
myTime.Format(timeLayout) = "Mon, Apr 7, 2025 7:36 PM"
But I received this strange output:
sourceTime = "Mon, Apr 7, 2025 7:36 PM"
myTime.Format(timeLayout) = "Mon, Apr 7, 2025 19:36 PM"
I did not change something in my variable, so why I received a different result with same layout? I should not change this time layout. But I need to receive the source string as a result again.
答案1
得分: 1
你的时间格式使用的是24小时制(例如15:04而不是3:04),所以当你进行格式化时,你得到的是19而不是7。如果你想要使用12小时制的时钟,那么你的时间格式应该是"Mon, Jan 2, 2006 3:04 PM"。
英文:
Your time layout is using a 24 hour clock (e.g. 15:04 instead of 3:04), so when you format it you get 19 instead of 7. If you want a 12 hour clock then your time layout should be "Mon, Jan 2, 2006 3:04 PM"
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论