Skip to content

Commit 80515d4

Browse files
committed
add IsZero to Time
1 parent 1c57359 commit 80515d4

4 files changed

Lines changed: 45 additions & 0 deletions

File tree

time.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,3 +141,9 @@ func (t Time) Ptr() *time.Time {
141141
}
142142
return &t.Time
143143
}
144+
145+
// IsZero returns true for invalid Times, hopefully for future omitempty support.
146+
// A non-null Time with a zero value will not be considered zero.
147+
func (t Time) IsZero() bool {
148+
return !t.Valid
149+
}

time_test.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,23 @@ func TestTimeValueOrZero(t *testing.T) {
172172
}
173173
}
174174

175+
func TestTimeIsZero(t *testing.T) {
176+
str := TimeFrom(timeValue)
177+
if str.IsZero() {
178+
t.Errorf("IsZero() should be false")
179+
}
180+
181+
zero := TimeFrom(time.Time{})
182+
if zero.IsZero() {
183+
t.Errorf("IsZero() should be false")
184+
}
185+
186+
null := TimeFromPtr(nil)
187+
if !null.IsZero() {
188+
t.Errorf("IsZero() should be true")
189+
}
190+
}
191+
175192
func assertTime(t *testing.T, ti Time, from string) {
176193
if ti.Time != timeValue {
177194
t.Errorf("bad %v time: %v ≠ %v\n", from, ti.Time, timeValue)

zero/time.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,3 +143,8 @@ func (t Time) Ptr() *time.Time {
143143
}
144144
return &t.Time
145145
}
146+
147+
// IsZero returns true for null or zero Times, for potential future omitempty support.
148+
func (t Time) IsZero() bool {
149+
return !t.Valid || t.Time.IsZero()
150+
}

zero/time_test.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,23 @@ func TestTimeValue(t *testing.T) {
193193
}
194194
}
195195

196+
func TestTimeIsZero(t *testing.T) {
197+
str := TimeFrom(timeValue)
198+
if str.IsZero() {
199+
t.Errorf("IsZero() should be false")
200+
}
201+
202+
zero := TimeFrom(time.Time{})
203+
if !zero.IsZero() {
204+
t.Errorf("IsZero() should be true")
205+
}
206+
207+
null := TimeFromPtr(nil)
208+
if !null.IsZero() {
209+
t.Errorf("IsZero() should be true")
210+
}
211+
}
212+
196213
func assertTime(t *testing.T, ti Time, from string) {
197214
if ti.Time != timeValue {
198215
t.Errorf("bad %v time: %v ≠ %v\n", from, ti.Time, timeValue)

0 commit comments

Comments
 (0)