Skip to content

Commit

Permalink
Handle parse time
Browse files Browse the repository at this point in the history
  • Loading branch information
dynastymasra committed Dec 15, 2020
1 parent 7d13ecf commit 05b354f
Show file tree
Hide file tree
Showing 2 changed files with 91 additions and 0 deletions.
21 changes: 21 additions & 0 deletions parse.go
Original file line number Diff line number Diff line change
Expand Up @@ -102,3 +102,24 @@ func ParsePtrGRPCTimeToTime(t *timestamppb.Timestamp) time.Time {

return ts
}

// ParseTimeToPtrTime parse time to pointer time, timezone UTC
func ParseTimeToPtrTime(t time.Time) *time.Time {
now := time.Now().UTC()
if t.IsZero() {
return &now
}
return &t
}

// ParsePtrTimeToTime parse pointer time to time, timezone UTC
func ParsePtrTimeToTime(t *time.Time) time.Time {
if t == nil {
return time.Now().UTC()
}

if t.IsZero() {
return time.Now().UTC()
}
return *t
}
70 changes: 70 additions & 0 deletions parse_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -201,3 +201,73 @@ func (p *ParseSuite) Test_ParsePtrGRPCTimeToTime() {
assert.Equal(p.T(), ts.Minute(), result.Minute())
assert.Equal(p.T(), ts.Second(), result.Second())
}

func (p *ParseSuite) Test_ParseTimeToPtrTime() {
ts := time.Now().UTC()

result := cookbook.ParseTimeToPtrTime(ts)

assert.NotNil(p.T(), result)
assert.Equal(p.T(), ts.Year(), result.Year())
assert.Equal(p.T(), ts.Month(), result.Month())
assert.Equal(p.T(), ts.Day(), result.Day())
assert.Equal(p.T(), ts.Hour(), result.Hour())
assert.Equal(p.T(), ts.Minute(), result.Minute())
assert.Equal(p.T(), ts.Second(), result.Second())
}

func (p *ParseSuite) Test_ParseTimeToPtrTime_Zero() {
ts := time.Date(1, 1, 1, 0, 0, 0, 0, time.UTC)

result := cookbook.ParseTimeToPtrTime(ts)

t := time.Now().UTC()

assert.NotNil(p.T(), result)
assert.Equal(p.T(), t.Year(), result.Year())
assert.Equal(p.T(), t.Month(), result.Month())
assert.Equal(p.T(), t.Day(), result.Day())
assert.Equal(p.T(), t.Hour(), result.Hour())
assert.Equal(p.T(), t.Minute(), result.Minute())
}

func (p *ParseSuite) Test_ParsePtrTimeToTime() {
ts := time.Now().UTC()

result := cookbook.ParsePtrTimeToTime(&ts)

assert.Equal(p.T(), ts.Year(), result.Year())
assert.Equal(p.T(), ts.Month(), result.Month())
assert.Equal(p.T(), ts.Day(), result.Day())
assert.Equal(p.T(), ts.Hour(), result.Hour())
assert.Equal(p.T(), ts.Minute(), result.Minute())
assert.Equal(p.T(), ts.Second(), result.Second())
}

func (p *ParseSuite) Test_ParsePtrTimeToTime_Nil() {
ts := time.Now().UTC()

result := cookbook.ParsePtrTimeToTime(nil)

assert.Equal(p.T(), ts.Year(), result.Year())
assert.Equal(p.T(), ts.Month(), result.Month())
assert.Equal(p.T(), ts.Day(), result.Day())
assert.Equal(p.T(), ts.Hour(), result.Hour())
assert.Equal(p.T(), ts.Minute(), result.Minute())
assert.Equal(p.T(), ts.Second(), result.Second())
}

func (p *ParseSuite) Test_ParsePtrTimeToTime_Zero() {
ts := time.Date(1, 1, 1, 0, 0, 0, 0, time.UTC)

result := cookbook.ParsePtrTimeToTime(&ts)

t := time.Now().UTC()

assert.NotNil(p.T(), result)
assert.Equal(p.T(), t.Year(), result.Year())
assert.Equal(p.T(), t.Month(), result.Month())
assert.Equal(p.T(), t.Day(), result.Day())
assert.Equal(p.T(), t.Hour(), result.Hour())
assert.Equal(p.T(), t.Minute(), result.Minute())
}

0 comments on commit 05b354f

Please sign in to comment.