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
相关产品推荐
相关产品推荐

