代码之家  ›  专栏  ›  技术社区  ›  Himanshu

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

go
  •  6
  • Himanshu  · 技术社区  · 7 年前

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

    07:05:45PM to 19:05:45
    

    我在下面尝试使用布局

    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)
    

    输出为:

    07:05:45PM
    

    我一直在寻找类似的答案,但这并不能帮助所有人使用整个布局。我用另一种语言找到了答案,但不是围棋。

    3 回复  |  直到 7 年前
        1
  •  8
  •   peterSO    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))
    }
    

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

    输出:

    07:05:45PM
    19:05:45
    

    参考号: package time

        2
  •  6
  •   Koala Yeung    4 年前

    关键是要了解如何编写 layout 论点根据 godoc ,的参考时间 布局 是:

    Mon Jan 2 15:04:05 -0700 MST 2006
    

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

    一串 代表
    1月1日或1月1日
    2或02 每月的第几天
    3或03或15 小时
    4或04 分钟
    5或05 第二
    2006年6月或6月
    -0700或MST 时区表示法
    项目经理 一天中的时段

    您需要将此日期重写为您的格式,作为解析的布局。您只需要根据需要包含这些元素。因此,只有小时、分钟、秒和上午/下午是重要的。参考时间 15:04:05 应写为 03:04:05PM

    只需将重写时间用作布局参数:

    import time
    
    ...
    
    
    t, _ := time.Parse("03:04:05PM", "07:05:45PM")
    fmt.Println(t.Format("15:04:05"))
    

    输出:

    19:05:45
    
        3
  •  0
  •   Thushara Buddhika    5 年前
    const (
        layoutDateTime   = "02 Jan 2006 15:04:05"
    )
    
    dateTimePM, _ := time.Parse(layoutDateTime + " PM", "07 Nov 2019 11:31:30 PM")
    dateTimeAM, _ := time.Parse(layoutDateTime + " PM", "07 Nov 2019 11:31:30 AM")
    

    这成功地正确转换了上午和下午的日期。