为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用多种格式循环解析日期?

如何使用多种格式循环解析日期?

Go
慕无忌1623718 2022-06-13 16:09:19
我正在尝试读取一个巨大的 csv 文件,其中的日期列具有 2 种可能的非标准格式的值...2015 年 12 月 28 日 -- 月/日/年2013 年 11 月 2 日 -- 月/日/年...意味着中间的一天部分可以是一位数或两位数。我从这个很好的老问题中学会了如何使用格式:解析不是“标准”格式的日期/时间字符串。但是由于我要循环尝试解析每一行,所以我一次只能指定一种格式。现在它在查找不同格式的日期值时出错。也许我可以在 parse-using-format#1 失败时编写代码来捕获错误,然后应用 format#2,而不是出错。但是有人可以指出我更好/正确的方法吗?带有日期字符串数组的示例代码:https: //play.golang.org/p/aloIQnrkOjKpackage mainimport (    "fmt"    "time")func main() {    const format = "01/02/2006" //mm/dd/yyyy    var list [2]string = [2]string{"12/28/2015", "11/2/2013"}    for _, data := range list {        t, err := time.Parse(format, data)        if err != nil {            fmt.Println("Error is: ", err)        } else {            fmt.Println("Value is: ", t)        }    }}//输出:值为:2015-12-28 00:00:00 +0000 UTC错误是:将“11/2/2013”解析为“01/02/2006”:无法将“2/2013”解析为“02”
查看完整描述

1 回答

?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

问题中的代码使用一种格式解析多个日期。问题是其中一个日期与格式不匹配(当天缺少前导零)。通过使前导零可选来修复:

const format = "1/2/2006" // remove zero before day (and month just in case)


查看完整回答
反对 回复 2022-06-13
  • 1 回答
  • 0 关注
  • 96 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信