You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Golang中12小时制转24小时制时间的实现方法问询

解决Go中12小时制时间转24小时制的问题

你遇到的问题核心在于两点:使用了和输入格式不匹配的layout,以及没有指定24小时制的输出格式。咱们一步步来搞定它:

首先,Go的time.Parse函数要求layout字符串必须和输入时间的格式完全对应。你输入的是07:05:45PM这种仅含时分秒和AM/PM标识的格式,不能用带日期、时区的完整layout,得用和输入匹配的格式串:

  • 12小时制的两位小时用03(如果输入是一位小时比如7:05:45PM,就用3)
  • 分钟用04,秒用05
  • AM/PM标识用PM(注意大小写要和输入一致,输入是小写pm就用pm)

其次,time.Parse得到的time.Time对象本身不区分12/24小时制,直接打印会用默认格式输出,所以需要用Format方法指定24小时制的输出格式——其中24小时制的小时用15表示。

下面是完整的可运行代码:

package main

import (
	"fmt"
	"time"
)

func main() {
	s := "07:05:45PM"
	// 定义和输入格式匹配的layout
	inputLayout := "03:04:05PM"
	t, err := time.Parse(inputLayout, s)
	if err != nil {
		fmt.Println("解析时间出错:", err)
		return
	}
	// 指定24小时制的输出格式
	outputLayout := "15:04:05"
	fmt.Println(t.Format(outputLayout)) // 输出:19:05:45
}

如果你的输入存在小时是一位的情况(比如7:05:45PM),只需要把inputLayout改成3:04:05PM即可,Go会自动兼容一位或两位的小时格式。

另外提醒下,实际开发中别忽略time.Parse返回的错误,一定要做错误检查,避免因输入格式异常导致程序出问题。

内容的提问来源于stack exchange,提问作者Himanshu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 07:03:16