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

使用未知布局将字符串解析为时间

使用未知布局将字符串解析为时间

Go
慕雪6442864 2023-01-03 17:20:52
我有一个csv文件,想阅读:标头名称字段类型所以,我写了以下内容:package mainimport (    "encoding/csv"    "fmt"    "os"    "log"    "reflect"    "strconv")func main() {    filePath := "./file.csv"    headerNames := make(map[int]string)    headerTypes := make(map[int]string)    // Load a csv file.    f, _ := os.Open(filePath)    // Create a new reader.    r := csv.NewReader(f)    // Read first row only    header, err := r.Read()    checkError("Some other error occurred", err)    // Add mapping: Column/property name --> record index    for i, v := range header {        headerNames[i] = v    }    // Read second row    record, err := r.Read()    checkError("Some other error occurred", err)    // Check record fields types    for i, v := range record {        var value interface{}        if value, err = strconv.Atoi(v); err != nil {            if value, err = strconv.ParseFloat(v, 64); err != nil {                if value, err = strconv.ParseBool(v); err != nil {                    if value, err = strconv.ParseBool(v); err != nil { // <== How to do this with unknown layout                        // Value is a string                        headerTypes[i] = "string"                        value = v                        fmt.Println(reflect.TypeOf(value), reflect.ValueOf(value))                    } else {                        // Value is a timestamp                        headerTypes[i] = "time"                        fmt.Println(reflect.TypeOf(value), reflect.ValueOf(value))                    }                } 
查看完整描述

1 回答

?
慕斯王

TA贡献1864条经验 获得超2个赞

我找到了使用这个包的解决方案:github.com/araddon/dateparse

// Normal parse.  Equivalent Timezone rules as time.Parse()

t, err := dateparse.ParseAny("3/1/2014")


// Parse Strict, error on ambigous mm/dd vs dd/mm dates

t, err := dateparse.ParseStrict("3/1/2014")

> returns error 


// Return a string that represents the layout to parse the given date-time.

layout, err := dateparse.ParseFormat("May 8, 2009 5:57:51 PM")

> "Jan 2, 2006 3:04:05 PM"


查看完整回答
反对 回复 2023-01-03
  • 1 回答
  • 0 关注
  • 87 浏览
慕课专栏
更多

添加回答

举报

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