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

Golang中如何解析含大写月份的日期字符串?

解决Go中解析"25-APR-2019"格式日期的问题

你遇到的问题核心是对Go time.Parse 函数的layout参数理解有误——Go的layout不是用通用占位符(比如MMM),而是用参考时间Mon Jan 2 15:04:05 MST 2006的具体格式片段来定义解析规则的。

你用"02-JAN-2006"作为layout时,JAN会被当成字面量字符串,只有当输入日期的月份部分恰好是JAN时才能匹配,自然无法解析APR。正确的做法是使用参考时间中的月份缩写格式Jan(首字母大写,后两位小写),它会匹配任意三个字母的月份缩写(不区分大小写)。

正确的代码示例

package main

import (
	"fmt"
	"time"
)

func main() {
	dateStr := "25-APR-2019"
	layout := "02-Jan-2006" // 使用参考时间的月份缩写格式
	
	date, err := time.Parse(layout, dateStr)
	if err != nil {
		fmt.Printf("解析失败: %v\n", err)
		return
	}
	
	fmt.Printf("解析结果: %v\n", date)
	// 输出示例: 2019-04-25 00:00:00 +0000 UTC
}

补充说明

  • time.Parse对月份缩写的大小写不敏感,所以Jan可以匹配APR、apr、Apr等任意大小写形式的三个月缩写。
  • 如果你的日期字符串包含时区信息,可以在layout中加入对应参考时间的时区部分(比如MST),或者使用time.ParseInLocation指定解析时使用的时区。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:09:06