Skip to content

Commit 18938f1

Browse files
Implement support for yyyy mon dd (2013 May 02)
Incorporate PR araddon#142 from https://github.com/dferstay to fix araddon#141
1 parent 301ffee commit 18938f1

File tree

2 files changed

+59
-1
lines changed

2 files changed

+59
-1
lines changed

parseany.go

Lines changed: 55 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,8 @@ const (
9595
dateAlphaSlashDigitSlash
9696
dateWeekdayComma
9797
dateWeekdayAbbrevComma
98+
dateYearWs
99+
dateYearWsMonthWs
98100
)
99101
const (
100102
// Time state
@@ -426,7 +428,15 @@ iterRunes:
426428
// 02 Jan 2018 23:59:34
427429
// 12 Feb 2006, 19:17
428430
// 12 Feb 2006, 19:17:22
429-
if i == 6 {
431+
// 2013 Jan 06 15:04:05
432+
if i == 4 {
433+
p.yearlen = i
434+
p.moi = i + 1
435+
if !p.setYear() {
436+
return p, unknownErr(datestr)
437+
}
438+
p.stateDate = dateYearWs
439+
} else if i == 6 {
430440
p.stateDate = dateDigitSt
431441
} else {
432442
p.stateDate = dateDigitWs
@@ -795,6 +805,45 @@ iterRunes:
795805
}
796806
break iterRunes
797807
}
808+
809+
case dateYearWs:
810+
// 2013 Jan 06 15:04:05
811+
// 2013 January 06 15:04:05
812+
if r == ' ' {
813+
p.molen = i - p.moi
814+
// Must be a valid short or long month
815+
if p.molen == 3 {
816+
p.set(p.moi, "Jan")
817+
p.dayi = i + 1
818+
p.stateDate = dateYearWsMonthWs
819+
} else {
820+
possibleFullMonth := strings.ToLower(p.datestr[p.moi:(p.moi + p.molen)])
821+
if i > 3 && isMonthFull(possibleFullMonth) {
822+
p.fullMonth = possibleFullMonth
823+
p.dayi = i + 1
824+
p.stateDate = dateYearWsMonthWs
825+
} else {
826+
return p, unknownErr(datestr)
827+
}
828+
}
829+
}
830+
case dateYearWsMonthWs:
831+
// 2013 Jan 06 15:04:05
832+
// 2013 January 06 15:04:05
833+
switch r {
834+
case ',':
835+
p.daylen = i - p.dayi
836+
p.setDay()
837+
i++
838+
p.stateTime = timeStart
839+
break iterRunes
840+
case ' ':
841+
p.daylen = i - p.dayi
842+
p.setDay()
843+
p.stateTime = timeStart
844+
break iterRunes
845+
}
846+
798847
case dateDigitChineseYear:
799848
// dateDigitChineseYear
800849
// 2014年04月08日
@@ -2142,6 +2191,11 @@ iterRunes:
21422191
// Mon, 02 Jan 2006 15:04:05 MST
21432192
return p, nil
21442193

2194+
case dateYearWsMonthWs:
2195+
// 2013 May 02 11:37:55
2196+
// 2013 December 02 11:37:55
2197+
return p, nil
2198+
21452199
}
21462200

21472201
return p, unknownErr(datestr)

parseany_test.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -404,6 +404,10 @@ var testInputs = []dateTest{
404404
{in: "2018-09-30 21:09:13.123 AMT", out: "2018-09-30 21:09:13.123 +0000 UTC", zname: "AMT"},
405405
{in: "2018-09-30 08:09:13.123 am AMT", out: "2018-09-30 08:09:13.123 +0000 UTC", zname: "AMT"},
406406
{in: "2018-09-30 08:09:13.123am AMT", out: "2018-09-30 08:09:13.123 +0000 UTC", zname: "AMT"},
407+
/// yyyy mmm dd https://github.com/araddon/dateparse/issues/141
408+
{in: "2013 May 02 11:37:55", out: "2013-05-02 11:37:55 +0000 UTC"},
409+
{in: "2013 June 02 11:37:55", out: "2013-06-02 11:37:55 +0000 UTC"},
410+
{in: "2013 December 02 11:37:55", out: "2013-12-02 11:37:55 +0000 UTC"},
407411
// yyyy-mm-dd hh:mm:ss,000
408412
{in: "2014-05-11 08:20:13,787", out: "2014-05-11 08:20:13.787 +0000 UTC"},
409413
// yyyy-mm-dd hh:mm:ss +0000

0 commit comments

Comments
 (0)