fix problem with date format 02.01.2006

This commit is contained in:
mehanizm 2021-08-06 23:16:49 +03:00
parent 6b43995a97
commit 8e1974be59
No known key found for this signature in database
GPG Key ID: BA0E2B4B75A7AC5B
2 changed files with 25 additions and 6 deletions

View File

@ -374,11 +374,21 @@ iterRunes:
p.setYear() p.setYear()
} else { } else {
p.ambiguousMD = true p.ambiguousMD = true
p.moi = 0 if p.preferMonthFirst {
if p.molen == 0 {
// 03.31.2005
p.molen = i p.molen = i
p.setMonth() p.setMonth()
p.dayi = i + 1 p.dayi = i + 1
} }
} else {
if p.daylen == 0 {
p.daylen = i
p.setDay()
p.moi = i + 1
}
}
}
case ' ': case ' ':
// 18 January 2018 // 18 January 2018
@ -726,9 +736,15 @@ iterRunes:
p.yeari = i + 1 p.yeari = i + 1
p.setDay() p.setDay()
p.stateDate = dateDigitDotDot p.stateDate = dateDigitDotDot
} else if p.dayi == 0 && p.yearlen == 0 {
// 23.07.2002
p.molen = i - p.moi
p.yeari = i + 1
p.setMonth()
p.stateDate = dateDigitDotDot
} else { } else {
// 2018.09.30 // 2018.09.30
//p.molen = 2 // p.molen = 2
p.molen = i - p.moi p.molen = i - p.moi
p.dayi = i + 1 p.dayi = i + 1
p.setMonth() p.setMonth()

View File

@ -402,6 +402,9 @@ var testInputs = []dateTest{
{in: "03.31.2014", out: "2014-03-31 00:00:00 +0000 UTC"}, {in: "03.31.2014", out: "2014-03-31 00:00:00 +0000 UTC"},
// mm.dd.yy // mm.dd.yy
{in: "08.21.71", out: "1971-08-21 00:00:00 +0000 UTC"}, {in: "08.21.71", out: "1971-08-21 00:00:00 +0000 UTC"},
// dd.mm.yyyy
{in: "23.07.1938", out: "1938-07-23 00:00:00 +0000 UTC"},
{in: "23/07/1938", out: "1938-07-23 00:00:00 +0000 UTC"},
// yyyymmdd and similar // yyyymmdd and similar
{in: "2014", out: "2014-01-01 00:00:00 +0000 UTC"}, {in: "2014", out: "2014-01-01 00:00:00 +0000 UTC"},
{in: "20140601", out: "2014-06-01 00:00:00 +0000 UTC"}, {in: "20140601", out: "2014-06-01 00:00:00 +0000 UTC"},
@ -450,7 +453,7 @@ func TestParse(t *testing.T) {
panic("whoops") panic("whoops")
} }
} else { } else {
ts = MustParse(th.in) ts = MustParse(th.in, RetryAmbiguousDateWithSwap(true))
got := fmt.Sprintf("%v", ts.In(time.UTC)) got := fmt.Sprintf("%v", ts.In(time.UTC))
assert.Equal(t, th.out, got, "Expected %q but got %q from %q", th.out, got, th.in) assert.Equal(t, th.out, got, "Expected %q but got %q from %q", th.out, got, th.in)
if th.out != got { if th.out != got {