Skip to content

Commit

Permalink
Provide Sunday and Monday functions with time (#44)
Browse files Browse the repository at this point in the history
* add time  for Monday and Sunday

* fix Readme

Co-authored-by: Jinzhu <[email protected]>
  • Loading branch information
versus and jinzhu authored Mar 17, 2022
1 parent 9ed46a7 commit f067b16
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 16 deletions.
10 changes: 7 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,13 +72,17 @@ Don't be bothered with the `WeekStartDay` setting, you can use `Monday`, `Sunday

```go
now.Monday() // 2013-11-18 00:00:00 Mon
now.Monday("17:44") // 2013-11-18 17:44:00 Mon
now.Sunday() // 2013-11-24 00:00:00 Sun (Next Sunday)
now.Sunday("18:19:24") // 2013-11-24 18:19:24 Sun (Next Sunday)
now.EndOfSunday() // 2013-11-24 23:59:59.999999999 Sun (End of next Sunday)

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

### Parse String to Time
Expand Down
9 changes: 5 additions & 4 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -154,13 +154,14 @@ func EndOfYear() time.Time {
}

// Monday monday
func Monday() time.Time {
return With(time.Now()).Monday()

func Monday(strs ...string) time.Time {
return With(time.Now()).Monday(strs...)
}

// Sunday sunday
func Sunday() time.Time {
return With(time.Now()).Sunday()
func Sunday(strs ...string) time.Time {
return With(time.Now()).Sunday(strs...)
}

// EndOfSunday end of sunday
Expand Down
40 changes: 34 additions & 6 deletions now.go
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@ func (now *Now) EndOfYear() time.Time {
}

// Monday monday
/*
func (now *Now) Monday() time.Time {
t := now.BeginningOfDay()
weekday := int(t.Weekday())
Expand All @@ -116,15 +117,42 @@ func (now *Now) Monday() time.Time {
}
return t.AddDate(0, 0, -weekday+1)
}
*/

// Sunday sunday
func (now *Now) Sunday() time.Time {
t := now.BeginningOfDay()
weekday := int(t.Weekday())
func (now *Now) Monday(strs ...string) time.Time {
var parseTime time.Time
var err error
if len(strs) > 0 {
parseTime, err = now.Parse(strs...)
if err != nil {
panic(err)
}
} else {
parseTime = now.BeginningOfDay()
}
weekday := int(parseTime.Weekday())
if weekday == 0 {
weekday = 7
}
return parseTime.AddDate(0, 0, -weekday+1)
}

func (now *Now) Sunday(strs ...string) time.Time {
var parseTime time.Time
var err error
if len(strs) > 0 {
parseTime, err = now.Parse(strs...)
if err != nil {
panic(err)
}
} else {
parseTime = now.BeginningOfDay()
}
weekday := int(parseTime.Weekday())
if weekday == 0 {
return t
weekday = 7
}
return t.AddDate(0, 0, (7 - weekday))
return parseTime.AddDate(0, 0, (7 - weekday))
}

// EndOfSunday end of sunday
Expand Down
16 changes: 13 additions & 3 deletions now_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -213,8 +213,16 @@ func TestMondayAndSunday(t *testing.T) {

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

assert(With(n).Monday("17:51:49"), "2013-11-18 17:51:49", "Monday")

assert(With(n).Monday("17:51"), "2013-11-18 17:51:00", "Monday")

assert(With(n).Sunday(), "2013-11-24 00:00:00", "Sunday")

assert(With(n).Sunday("18:19:20"), "2013-11-24 18:19:20", "Sunday")

assert(With(n).Sunday("18:19"), "2013-11-24 18:19:00", "Sunday")

assert(With(n2).Sunday(), "2013-11-24 00:00:00", "Sunday")

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

Monday() // 2013-11-18 00:00:00 Mon
Sunday() // 2013-11-24 00:00:00 Sun
EndOfSunday() // 2013-11-24 23:59:59.999999999 Sun
Monday() // 2013-11-18 00:00:00 Mon
Monday("17:44") // 2013-11-18 17:44:00 Mon
Sunday() // 2013-11-24 00:00:00 Sun
Sunday("17:44") // 2013-11-24 17:44:00 Sun
EndOfSunday() // 2013-11-24 23:59:59.999999999 Sun
}

0 comments on commit f067b16

Please sign in to comment.