フォーマットが決まっていない文字列から日付を推測するgolangのpackageを作った.
fdateという.
fdatefふわっと(fuwatto)f である.
フォーマットが決まっていない文字列というか半角数字の羅列から日付として成り立つように組み立てるというのが正しいが.

日付として成り立つ区間の年度を1945~今の年にしてはあるが fdate.MIN_YEAR()fdate.MAX_YEAR() を上書きすると定義を書き換える事ができる.

使用例は次のような感じである.

package main

import (
	"encoding/json"
	"fmt"
	"log"

	"github.com/ieee0824/fdate"
)

func main() {
	strs := []string{
		"2018/10/21",
		"2018-10-20",
		"197211",
		"19720101",
		"19800824",
		"1980824",
		"200011",
		"200021232",
		"2010年1月1日",
	}

	for _, v := range strs {
		d, err := fdate.PickPossibleDate(v)
		if err != nil {
			log.Println(err)
		}

		bin, _ := json.MarshalIndent(d, "", "    ")

		fmt.Print(v, " = ")
		fmt.Println(string(bin), "\n")
	}
}

そして実行結果はこうなる.

$ go run example/main.go 
2018/10/21 = [
    "2018-10-21T00:00:00+09:00"
] 

2018-10-20 = [
    "2018-10-20T00:00:00+09:00"
] 

197211 = [
    "1972-01-01T00:00:00+09:00"
] 

19720101 = [
    "1972-01-01T00:00:00+09:00"
] 

19800824 = [
    "1980-08-02T00:00:00+09:00",
    "1980-08-24T00:00:00+09:00"
] 

1980824 = [
    "1980-08-02T00:00:00+09:00",
    "1980-08-24T00:00:00+09:00"
] 

200011 = [
    "2000-01-01T00:00:00+09:00"
] 

200021232 = [
    "2000-02-03T00:00:00+09:00",
    "2000-01-23T00:00:00+09:00",
    "2000-12-03T00:00:00+09:00",
    "2000-01-03T00:00:00+09:00",
    "2000-02-01T00:00:00+09:00",
    "2000-02-12T00:00:00+09:00",
    "2000-02-02T00:00:00+09:00",
    "2000-02-23T00:00:00+09:00",
    "2000-01-02T00:00:00+09:00"
] 

2010年1月1日 = [
    "2010-01-01T00:00:00+09:00"
]