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

我有一个csv文件,想阅读:

  1. 标头名称

  2. 字段类型

所以,我写了以下内容:

package main


import (

    "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))

                    }

                } 



慕雪6442864
浏览 91回答 1
1回答

慕斯王

我找到了使用这个包的解决方案:github.com/araddon/dateparse// Normal parse.&nbsp; Equivalent Timezone rules as time.Parse()t, err := dateparse.ParseAny("3/1/2014")// Parse Strict, error on ambigous mm/dd vs dd/mm datest, err := dateparse.ParseStrict("3/1/2014")> returns error&nbsp;// 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"
打开App,查看更多内容
随时随地看视频慕课网APP