Skip to content

Commit f067b16

Browse files
versusjinzhu
andauthored
Provide Sunday and Monday functions with time (#44)
* add time for Monday and Sunday * fix Readme Co-authored-by: Jinzhu <[email protected]>
1 parent 9ed46a7 commit f067b16

File tree

4 files changed

+59
-16
lines changed

4 files changed

+59
-16
lines changed

README.md

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,13 +72,17 @@ Don't be bothered with the `WeekStartDay` setting, you can use `Monday`, `Sunday
7272

7373
```go
7474
now.Monday() // 2013-11-18 00:00:00 Mon
75+
now.Monday("17:44") // 2013-11-18 17:44:00 Mon
7576
now.Sunday() // 2013-11-24 00:00:00 Sun (Next Sunday)
77+
now.Sunday("18:19:24") // 2013-11-24 18:19:24 Sun (Next Sunday)
7678
now.EndOfSunday() // 2013-11-24 23:59:59.999999999 Sun (End of next Sunday)
7779

7880
t := time.Date(2013, 11, 24, 17, 51, 49, 123456789, time.Now().Location()) // 2013-11-24 17:51:49.123456789 Sun
79-
now.With(t).Monday() // 2013-11-18 00:00:00 Sun (Last Monday if today is Sunday)
80-
now.With(t).Sunday() // 2013-11-24 00:00:00 Sun (Beginning Of Today if today is Sunday)
81-
now.With(t).EndOfSunday() // 2013-11-24 23:59:59.999999999 Sun (End of Today if today is Sunday)
81+
now.With(t).Monday() // 2013-11-18 00:00:00 Mon (Last Monday if today is Sunday)
82+
now.With(t).Monday("17:44") // 2013-11-18 17:44:00 Mon (Last Monday if today is Sunday)
83+
now.With(t).Sunday() // 2013-11-24 00:00:00 Sun (Beginning Of Today if today is Sunday)
84+
now.With(t).Sunday("18:19:24") // 2013-11-24 18:19:24 Sun (Beginning Of Today if today is Sunday)
85+
now.With(t).EndOfSunday() // 2013-11-24 23:59:59.999999999 Sun (End of Today if today is Sunday)
8286
```
8387

8488
### Parse String to Time

main.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -154,13 +154,14 @@ func EndOfYear() time.Time {
154154
}
155155

156156
// Monday monday
157-
func Monday() time.Time {
158-
return With(time.Now()).Monday()
157+
158+
func Monday(strs ...string) time.Time {
159+
return With(time.Now()).Monday(strs...)
159160
}
160161

161162
// Sunday sunday
162-
func Sunday() time.Time {
163-
return With(time.Now()).Sunday()
163+
func Sunday(strs ...string) time.Time {
164+
return With(time.Now()).Sunday(strs...)
164165
}
165166

166167
// EndOfSunday end of sunday

now.go

Lines changed: 34 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ func (now *Now) EndOfYear() time.Time {
108108
}
109109

110110
// Monday monday
111+
/*
111112
func (now *Now) Monday() time.Time {
112113
t := now.BeginningOfDay()
113114
weekday := int(t.Weekday())
@@ -116,15 +117,42 @@ func (now *Now) Monday() time.Time {
116117
}
117118
return t.AddDate(0, 0, -weekday+1)
118119
}
120+
*/
119121

120-
// Sunday sunday
121-
func (now *Now) Sunday() time.Time {
122-
t := now.BeginningOfDay()
123-
weekday := int(t.Weekday())
122+
func (now *Now) Monday(strs ...string) time.Time {
123+
var parseTime time.Time
124+
var err error
125+
if len(strs) > 0 {
126+
parseTime, err = now.Parse(strs...)
127+
if err != nil {
128+
panic(err)
129+
}
130+
} else {
131+
parseTime = now.BeginningOfDay()
132+
}
133+
weekday := int(parseTime.Weekday())
134+
if weekday == 0 {
135+
weekday = 7
136+
}
137+
return parseTime.AddDate(0, 0, -weekday+1)
138+
}
139+
140+
func (now *Now) Sunday(strs ...string) time.Time {
141+
var parseTime time.Time
142+
var err error
143+
if len(strs) > 0 {
144+
parseTime, err = now.Parse(strs...)
145+
if err != nil {
146+
panic(err)
147+
}
148+
} else {
149+
parseTime = now.BeginningOfDay()
150+
}
151+
weekday := int(parseTime.Weekday())
124152
if weekday == 0 {
125-
return t
153+
weekday = 7
126154
}
127-
return t.AddDate(0, 0, (7 - weekday))
155+
return parseTime.AddDate(0, 0, (7 - weekday))
128156
}
129157

130158
// EndOfSunday end of sunday

now_test.go

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -213,8 +213,16 @@ func TestMondayAndSunday(t *testing.T) {
213213

214214
assert(With(nDst).Monday(), "2017-10-23 00:00:00", "Monday DST")
215215

216+
assert(With(n).Monday("17:51:49"), "2013-11-18 17:51:49", "Monday")
217+
218+
assert(With(n).Monday("17:51"), "2013-11-18 17:51:00", "Monday")
219+
216220
assert(With(n).Sunday(), "2013-11-24 00:00:00", "Sunday")
217221

222+
assert(With(n).Sunday("18:19:20"), "2013-11-24 18:19:20", "Sunday")
223+
224+
assert(With(n).Sunday("18:19"), "2013-11-24 18:19:00", "Sunday")
225+
218226
assert(With(n2).Sunday(), "2013-11-24 00:00:00", "Sunday")
219227

220228
assert(With(timeCaracas).Sunday(), "2016-01-03 00:00:00", "Sunday Caracas")
@@ -433,7 +441,9 @@ func Example() {
433441
t := time.Date(2013, 02, 18, 17, 51, 49, 123456789, time.UTC)
434442
With(t).EndOfMonth() // 2013-02-28 23:59:59.999999999 Thu
435443

436-
Monday() // 2013-11-18 00:00:00 Mon
437-
Sunday() // 2013-11-24 00:00:00 Sun
438-
EndOfSunday() // 2013-11-24 23:59:59.999999999 Sun
444+
Monday() // 2013-11-18 00:00:00 Mon
445+
Monday("17:44") // 2013-11-18 17:44:00 Mon
446+
Sunday() // 2013-11-24 00:00:00 Sun
447+
Sunday("17:44") // 2013-11-24 17:44:00 Sun
448+
EndOfSunday() // 2013-11-24 23:59:59.999999999 Sun
439449
}

0 commit comments

Comments
 (0)