golang 将 12 小时格式时间转换为 24 小时格式时间

Him*_*shu 6 go

在 golang 中,我还没有找到将 12 小时格式字符串时间转换为 24 小时格式的任何方法,如下所示:

07:05:45PM to 19:05:45
Run Code Online (Sandbox Code Playgroud)

我在下面尝试过使用布局

layout := "Mon Jan 2 15:04:05 -0700 MST 2006"
/*
 * Write your code here.
 */
//layout := "3:04PM"
t,_ := time.Parse(layout,s)
fmt.Println(t)
Run Code Online (Sandbox Code Playgroud)

输出是:

07:05:45PM
Run Code Online (Sandbox Code Playgroud)

我一直在寻找与此类似的答案,但这并不能帮助每个人都使用整个布局。我找到了另一种语言的答案,但没有找到。

pet*_*rSO 7

例如,

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))
}
Run Code Online (Sandbox Code Playgroud)

游乐场:https : //play.golang.org/p/Ypn2-lEF_Zs

输出:

07:05:45PM
19:05:45
Run Code Online (Sandbox Code Playgroud)

参考:打包时间


Koa*_*ung 6

关键是要明白如何写layout论据。根据godoc,参考时间为layout

Mon Jan 2 15:04:05 -0700 MST 2006
Run Code Online (Sandbox Code Playgroud)

日期的每个字符串元素都有一个与之相关的特定数值:

细绳 代表
1 或 01 或 1 月
2 或 02 每月的某一天
3 或 03 或 15 小时
4 或 04 分钟
5 或 05 第二
6 或 06 或 2006
-0700 或 MST 时区表示
下午 一天中的一段时间

您需要将此日期重写为您的格式作为解析布局。您只需要包含您需要的元素。所以只有小时、分钟、秒和 AM/PM 是重要的。参考时间15:04:05应写为03:04:05PM.

只需使用重写的时间作为布局参数:

Mon Jan 2 15:04:05 -0700 MST 2006
Run Code Online (Sandbox Code Playgroud)

输出:

19:05:45
Run Code Online (Sandbox Code Playgroud)