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

Golang如何解析Excel导出的特殊时间格式并转换为指定格式

Go 解析自定义时间格式并转换为标准格式

完全可以实现,直接使用Go标准库内置的time包即可完成操作,不需要引入第三方依赖。


实现原理

Go的时间解析/格式化采用参考时间匹配规则,不需要记忆通用的Y、m、d等占位符,只需要将你的输入格式替换为参考时间2006-01-02 15:04:05的对应位置值,即可生成对应的解析布局(layout)。

你给出的输入格式18/09/21 14.56(默认顺序为 年/月/日 小时.分钟),对应的解析布局为06/01/02 15.04,目标格式对应的布局为2006-01-02 15:04:05。


代码示例

package main

import (
	"fmt"
	"time"
)

func main() {
	// 输入的原始时间字符串
	rawTimeStr := "18/09/21 14.56"
	// 对应输入格式的解析布局
	parseLayout := "06/01/02 15.04"
	// 目标输出格式的布局
	targetLayout := "2006-01-02 15:04:05"

	// 解析时间(默认UTC时区,需要本地时区可改用time.ParseInLocation)
	parsedTime, err := time.Parse(parseLayout, rawTimeStr)
	if err != nil {
		fmt.Printf("时间解析失败:%v\n", err)
		return
	}

	// 转换为东八区时间(可选,可根据自身时区需求调整)
	cstZone := time.FixedZone("CST", 8*3600)
	cstTime := parsedTime.In(cstZone)

	// 格式化为目标格式
	result := cstTime.Format(targetLayout)
	fmt.Println(result) // 输出:2018-09-21 14:56:00
}

注意事项

  • 如果你的原始时间18/09/21实际顺序为日/月/年,只需要将解析布局修改为02/01/06 15.04即可,根据实际字段顺序调整布局中的年、月、日位置即可。
  • 直接使用time.Parse得到的是UTC时区时间,如果需要和你本地时区匹配,建议使用time.ParseInLocation方法指定时区,避免时差导致日期出现偏移。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 14:15:02