mirror of
https://github.com/araddon/dateparse.git
synced 2024-11-10 03:41:55 +08:00
New date format 2020-07-20+00:00 fixes #110
This commit is contained in:
parent
36fa6fb41d
commit
0eec95c9db
@ -154,6 +154,8 @@ var examples = []string{
|
||||
"2014-04",
|
||||
"2014",
|
||||
"2014-05-11 08:20:13,787",
|
||||
// yyyy-mm-dd-07:00
|
||||
"2020-07-20+08:00",
|
||||
// mm.dd.yy
|
||||
"3.31.2014",
|
||||
"03.31.2014",
|
||||
@ -302,6 +304,7 @@ func main() {
|
||||
| 2014-04 | 2014-04-01 00:00:00 +0000 UTC |
|
||||
| 2014 | 2014-01-01 00:00:00 +0000 UTC |
|
||||
| 2014-05-11 08:20:13,787 | 2014-05-11 08:20:13.787 +0000 UTC |
|
||||
| 2020-07-20+08:00 | 2020-07-20 00:00:00 +0800 +0800 |
|
||||
| 3.31.2014 | 2014-03-31 00:00:00 +0000 UTC |
|
||||
| 03.31.2014 | 2014-03-31 00:00:00 +0000 UTC |
|
||||
| 08.21.71 | 1971-08-21 00:00:00 +0000 UTC |
|
||||
|
@ -111,6 +111,8 @@ var examples = []string{
|
||||
"2014-04",
|
||||
"2014",
|
||||
"2014-05-11 08:20:13,787",
|
||||
// yyyy-mm-dd-07:00
|
||||
"2020-07-20+08:00",
|
||||
// mm.dd.yy
|
||||
"3.31.2014",
|
||||
"03.31.2014",
|
||||
@ -259,6 +261,7 @@ func main() {
|
||||
| 2014-04 | 2014-04-01 00:00:00 +0000 UTC |
|
||||
| 2014 | 2014-01-01 00:00:00 +0000 UTC |
|
||||
| 2014-05-11 08:20:13,787 | 2014-05-11 08:20:13.787 +0000 UTC |
|
||||
| 2020-07-20+08:00 | 2020-07-20 00:00:00 +0800 +0800 |
|
||||
| 3.31.2014 | 2014-03-31 00:00:00 +0000 UTC |
|
||||
| 03.31.2014 | 2014-03-31 00:00:00 +0000 UTC |
|
||||
| 08.21.71 | 1971-08-21 00:00:00 +0000 UTC |
|
||||
|
49
parseany.go
49
parseany.go
@ -61,35 +61,36 @@ const (
|
||||
dateYearDashDash
|
||||
dateYearDashDashWs // 5
|
||||
dateYearDashDashT
|
||||
dateYearDashDashOffset
|
||||
dateDigitDash
|
||||
dateDigitDashAlpha
|
||||
dateDigitDashAlphaDash
|
||||
dateDigitDot // 10
|
||||
dateDigitDashAlphaDash // 10
|
||||
dateDigitDot
|
||||
dateDigitDotDot
|
||||
dateDigitSlash
|
||||
dateDigitYearSlash
|
||||
dateDigitSlashAlpha
|
||||
dateDigitColon // 15
|
||||
dateDigitSlashAlpha // 15
|
||||
dateDigitColon
|
||||
dateDigitChineseYear
|
||||
dateDigitChineseYearWs
|
||||
dateDigitWs
|
||||
dateDigitWsMoYear
|
||||
dateDigitWsMolong // 20
|
||||
dateDigitWsMoYear // 20
|
||||
dateDigitWsMolong
|
||||
dateAlpha
|
||||
dateAlphaWs
|
||||
dateAlphaWsDigit
|
||||
dateAlphaWsDigitMore
|
||||
dateAlphaWsDigitMoreWs // 25
|
||||
dateAlphaWsDigitMore // 25
|
||||
dateAlphaWsDigitMoreWs
|
||||
dateAlphaWsDigitMoreWsYear
|
||||
dateAlphaWsMonth
|
||||
dateAlphaWsDigitYearmaybe
|
||||
dateAlphaWsMonthMore
|
||||
dateAlphaWsMonthSuffix // 30
|
||||
dateAlphaWsMonthSuffix
|
||||
dateAlphaWsMore
|
||||
dateAlphaWsAtTime
|
||||
dateAlphaWsAlpha
|
||||
dateAlphaWsAlphaYearmaybe
|
||||
dateAlphaPeriodWsDigit // 35
|
||||
dateAlphaWsAlphaYearmaybe // 35
|
||||
dateAlphaPeriodWsDigit
|
||||
dateWeekdayComma
|
||||
dateWeekdayAbbrevComma
|
||||
)
|
||||
@ -434,7 +435,14 @@ iterRunes:
|
||||
// 2006-01-02T15:04:05Z07:00
|
||||
// dateYearDashDashWs
|
||||
// 2013-04-01 22:43:22
|
||||
// dateYearDashDashOffset
|
||||
// 2020-07-20+00:00
|
||||
switch r {
|
||||
case '+', '-':
|
||||
p.offseti = i
|
||||
p.daylen = i - p.dayi
|
||||
p.stateDate = dateYearDashDashOffset
|
||||
p.setDay()
|
||||
case ' ':
|
||||
p.daylen = i - p.dayi
|
||||
p.stateDate = dateYearDashDashWs
|
||||
@ -454,6 +462,15 @@ iterRunes:
|
||||
// 2006-01-02T15:04:05Z07:00
|
||||
// 2020-08-17T17:00:00:000+0100
|
||||
|
||||
case dateYearDashDashOffset:
|
||||
// 2020-07-20+00:00
|
||||
switch r {
|
||||
case ':':
|
||||
p.set(p.offseti, "-07:00")
|
||||
// case ' ':
|
||||
// return nil, unknownErr(datestr)
|
||||
}
|
||||
|
||||
case dateYearDashAlphaDash:
|
||||
// 2013-Feb-03
|
||||
switch r {
|
||||
@ -1777,6 +1794,16 @@ iterRunes:
|
||||
// 2006-01-2
|
||||
return p, nil
|
||||
|
||||
case dateYearDashDashOffset:
|
||||
/// 2020-07-20+00:00
|
||||
switch len(p.datestr) - p.offseti {
|
||||
case 5:
|
||||
p.set(p.offseti, "-0700")
|
||||
case 6:
|
||||
p.set(p.offseti, "-07:00")
|
||||
}
|
||||
return p, nil
|
||||
|
||||
case dateYearDashAlphaDash:
|
||||
// 2013-Feb-03
|
||||
// 2013-Feb-3
|
||||
|
@ -11,8 +11,8 @@ import (
|
||||
func TestOne(t *testing.T) {
|
||||
time.Local = time.UTC
|
||||
var ts time.Time
|
||||
ts = MustParse("Thu, 17 Dec 2020 15:39:13 GMT")
|
||||
assert.Equal(t, "2020-12-17 15:39:13 +0000 UTC", fmt.Sprintf("%v", ts.In(time.UTC)))
|
||||
ts = MustParse("2020-07-20+08:00")
|
||||
assert.Equal(t, "2020-07-19 16:00:00 +0000 UTC", fmt.Sprintf("%v", ts.In(time.UTC)))
|
||||
}
|
||||
|
||||
type dateTest struct {
|
||||
@ -236,6 +236,9 @@ var testInputs = []dateTest{
|
||||
{in: "2014-04-02", out: "2014-04-02 00:00:00 +0000 UTC"},
|
||||
{in: "2014-03-31", out: "2014-03-31 00:00:00 +0000 UTC"},
|
||||
{in: "2014-4-2", out: "2014-04-02 00:00:00 +0000 UTC"},
|
||||
// yyyy-mm-dd-07:00
|
||||
{in: "2020-07-20+08:00", out: "2020-07-19 16:00:00 +0000 UTC"},
|
||||
{in: "2020-07-20+0800", out: "2020-07-19 16:00:00 +0000 UTC"},
|
||||
// dd-mmm-yy
|
||||
{in: "28-Feb-02", out: "2002-02-28 00:00:00 +0000 UTC"},
|
||||
{in: "15-Jan-18", out: "2018-01-15 00:00:00 +0000 UTC"},
|
||||
|
Loading…
Reference in New Issue
Block a user