Skip to content

Commit 779b66b

Browse files
committed
Merge pull request #1 from tkuchiki/use-regexp
Use regexp
2 parents 5c0a0e3 + 980eb4f commit 779b66b

File tree

9 files changed

+2350
-685
lines changed

9 files changed

+2350
-685
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
pkg/
2+
src/

.travis.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,6 @@ script:
1212
- make test
1313

1414
after_script:
15-
- make cover
15+
- make cover
16+
17+
sodo: false

Makefile

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,16 @@
11
BUILD_OS_TARGETS = "linux darwin freebsd windows"
22

33
test: deps
4-
go test -v -covermode=count -coverprofile=coverage.out ./...
4+
go test -v -covermode=count -coverprofile=coverage.out
55

66
deps:
77
go get -d -v -t ./...
88
go get github.com/golang/lint/golint
9-
go get golang.org/x/tools/cmd/vet
109
go get golang.org/x/tools/cmd/cover
1110
go get github.com/mattn/goveralls
1211

1312
LINT_RET = .golint.txt
1413
lint: deps
15-
go vet ./...
1614
rm -f $(LINT_RET)
1715
golint ./... | tee $(LINT_RET)
1816
test ! -s $(LINT_RET)

README.md

Lines changed: 630 additions & 0 deletions
Large diffs are not rendered by default.

const.go

Lines changed: 78 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,63 +1,83 @@
11
package parsetime
22

3+
import (
4+
"strings"
5+
)
6+
37
const (
4-
Date = "200612"
5-
MMDDYYYY = "1/2/2006"
6-
ShortTime = "15:4 PM"
7-
LongTime = "15:4:5 PM"
8-
ANSICAsctime = "Mon Jan 2 15:4:5 2006"
9-
RFC850NoWeekday = "2-Jan-06 15:4:5 MST"
10-
RFC850NoTime = "2-Jan-06"
11-
BrokenRFC850 = "Monday, 2-Jan-2006 15:4:5 MST"
12-
BrokenRFC850NoWeekday = "2-Jan-2006 15:4:5 MST"
13-
BrokenRFC850NoTime = "2-Jan-2006"
14-
CommonLog = "2/Jan/2006:15:4:5 -0700"
15-
CommonLogNoTime = "2/Jan/2006"
16-
LsDate = "Jan 2 2006"
17-
LsTime = "Jan 2 15:4"
18-
WindowsDir = "1-2-06 15:4PM"
19-
ISO8601DateHour = "2006-1-2 15"
20-
ISO8601DateHourMin = "2006-1-2 15:4"
21-
ISO8601Datetime = "2006-1-2 15:4:5"
22-
ISO8601DatetimeCompact = "200612 1545"
23-
ISO8601DatetimeCompactUTC = "200612 1545Z"
24-
ISO8601DatetimeOffset = "2006-1-2 15:4:5-07:00"
25-
ISO8601DatetimeOffsetTZD = "2006-1-2 15:4:5-07:00 MST"
26-
ISO8601DatetimeFracSecOffset = "2006-1-2 15:4:5.999999999-07:00"
27-
ISO8601DatetimeOffset2 = "2006-1-2 15:4:5 -07:00"
28-
ISO8601DatetimeOffsetTZD2 = "2006-1-2 15:4:5 -07:00 MST"
29-
ISO8601DatetimeFracSecOffset2 = "2006-1-2 15:4:5.999999999 -07:00"
30-
ISO8601DatetimeFracSecUTC = "2006-1-2 15:4:5.999999999Z"
31-
ISO8601DatetimeFracSec = "2006-1-2 15:4:5.999999999"
32-
ISO8601TDatetime = "2006-1-2T15:4:5"
33-
ISO8601TDatetimeCompact = "200612T1545"
34-
ISO8601TDatetimeCompactUTC = "200612T1545Z"
35-
ISO8601TDateHour = "2006-1-2T15"
36-
ISO8601TDateHourMin = "2006-1-2T15:4"
37-
ISO8601TDatetimeOffset = "2006-1-2T15:4:5-07:00"
38-
ISO8601TDatetimeOffsetTZD = "2006-1-2T15:4:5-07:00 MST"
39-
ISO8601TDatetimeFracSecOffset = "2006-1-2T15:4:5.999999999-07:00"
40-
ISO8601TDatetimeFracSecUTC = "2006-1-2T15:4:5.999999999Z"
41-
ISO8601TDatetimeFracSec = "2006-1-2T15:4:5.999999999"
42-
ISO8601Date = "2006-1-2"
43-
ISO8601Time = "15:4:5"
44-
ISO8601TimeOffset = "15:4:5-07:00"
45-
MMDDYYYYDatetime = "1/2/2006 15:4:5"
8+
year = `(2[0-9]{3}|19[7-9][0-9])`
9+
month = `(1[012]|0?[1-9])`
10+
day = `([12][0-9]|3[01]|0?[1-9])`
11+
hour = `(2[0-3]|[01]?[0-9])`
12+
min = `([0-5]?[0-9])`
13+
sec = min
14+
nsec = `(?:[.])?([0-9]{1,9})?`
15+
weekday = `(?:Mon|Monday|Tue|Tuesday|Wed|Wednesday|Thu|Thursday|Fri|Friday|Sat|Saturday|Sun|Sunday)`
16+
monthAbbr = `(Jan|January|Feb|Februray|Mar|March|Apr|April|May|Jun|June|Jul|July|Aug|August|Sep|September|Oct|October|Nov|November|Dec|December|1[012]|0?[1-9])`
17+
offset = `(Z|[+-][01][1-9]:[0-9]{2})?`
18+
zone = `(?:[a-zA-Z0-9+-]{3,6})?`
19+
ymdSep = `[ /.-]?`
20+
hmsSep = `[ :.]?`
21+
t = `(?:t|T|\s*)?`
22+
s = `(?:\s*)?`
23+
ampm = `([aApP][mM])`
24+
ampmHour = `(1[01]|[0]?[0-9])`
25+
shortYear = `(2[0-9]{3}|19[7-9][0-9]|[0-9]{2})`
26+
offsetZone = `([+-][01][1-9]:[0-9]{2}|[a-zA-Z0-9+-]{3,6})?`
27+
usOffsetZone = `(?:[(])?([+-][01][1-9]:[0-9]{2}|[a-zA-Z0-9+-]{3,6})?(?:[)])?`
28+
)
29+
30+
// Regular expressions
31+
var (
32+
// ISO8601, RFC3339
33+
ISO8601 = strings.Join([]string{
34+
`(?:`, year, ymdSep, month, ymdSep, day, `)?`, t,
35+
`(?:`, hour, hmsSep, min, hmsSep, sec, `?`, nsec, `)?`,
36+
s, offset, s, zone,
37+
}, "")
38+
39+
// RFC822, RFC850, RFC1123
40+
RFC8xx1123 = strings.Join([]string{
41+
`(?:`, weekday, `,?`, s, `)?`, day, ymdSep, monthAbbr, ymdSep, shortYear,
42+
hmsSep, `(?:`, hour, hmsSep, min, hmsSep, sec, `?`, nsec, `)?`,
43+
s, offsetZone,
44+
}, "")
45+
46+
ANSIC = strings.Join([]string{
47+
`(?:`, weekday, s, `)?`, monthAbbr, ymdSep, day, ymdSep,
48+
`(?:`, hour, hmsSep, min, hmsSep, sec, `?`, nsec, `)?`,
49+
s, `(?:`, offsetZone, s, year, `)?`,
50+
}, "")
51+
52+
US = strings.Join([]string{
53+
`(?:`, monthAbbr, ymdSep, day, `(?:,)?`, ymdSep, shortYear, `)?`, s, `(?:at)?`, s,
54+
`(?:`, hour, hmsSep, min, hmsSep, sec, `?`, nsec, `)?`,
55+
s, ampm, `?`, s, usOffsetZone,
56+
}, "")
4657

47-
// time/format.go
48-
// ANSIC // "Mon Jan _2 15:04:05 2006"
49-
// UnixDate // "Mon Jan _2 15:04:05 MST 2006"
50-
// RubyDate // "Mon Jan 02 15:04:05 -0700 2006"
51-
// RFC822 // "02 Jan 06 15:04 MST"
52-
// RFC822Z // "02 Jan 06 15:04 -0700" // RFC822 with numeric zone
53-
// RFC850 // "Monday, 02-Jan-06 15:04:05 MST"
54-
// RFC1123 // "Mon, 02 Jan 2006 15:04:05 MST"
55-
// RFC1123Z // "Mon, 02 Jan 2006 15:04:05 -0700" // RFC1123 with numeric zone
56-
// RFC3339 // "2006-01-02T15:04:05Z07:00"
57-
// RFC3339Nano // "2006-01-02T15:04:05.999999999Z07:00"
58-
// Kitchen // "3:04PM"
59-
// Stamp // "Jan _2 15:04:05"
60-
// StampMilli // "Jan _2 15:04:05.000"
61-
// StampMicro // "Jan _2 15:04:05.000000"
62-
// StampNano // "Jan _2 15:04:05.000000000"
58+
Months = map[string]int{
59+
"Jan": 1,
60+
"January": 1,
61+
"Feb": 2,
62+
"Februray": 2,
63+
"Mar": 3,
64+
"March": 3,
65+
"Apr": 4,
66+
"April": 4,
67+
"May": 5,
68+
"Jun": 6,
69+
"June": 6,
70+
"Jul": 7,
71+
"July": 7,
72+
"Aug": 8,
73+
"August": 8,
74+
"Sep": 9,
75+
"September": 9,
76+
"Oct": 10,
77+
"October": 10,
78+
"Nov": 11,
79+
"November": 11,
80+
"Dec": 12,
81+
"December": 12,
82+
}
6383
)

0 commit comments

Comments
 (0)