added last day of month function

This commit is contained in:
Radu Ioan Fericean
2016-02-17 14:19:38 +02:00
parent ec2ab553d6
commit 059c82fd47
2 changed files with 43 additions and 0 deletions

View File

@@ -518,3 +518,18 @@ func CastIfToString(iface interface{}) (strVal string, casts bool) {
}
return strVal, casts
}
func GetEndOfMonth(ref time.Time) time.Time {
if ref.IsZero() {
return time.Now()
}
year, month, _ := ref.Date()
if month == time.December {
year++
month = time.January
} else {
month++
}
eom := time.Date(year, month, 1, 0, 0, 0, 0, ref.Location())
return eom.Add(-time.Second)
}

View File

@@ -600,3 +600,31 @@ func TestCastIfToString(t *testing.T) {
t.Errorf("Received: %+v", sOut)
}
}
func TestEndOfMonth(t *testing.T) {
eom := GetEndOfMonth(time.Date(2016, time.February, 5, 10, 1, 2, 3, time.UTC))
expected := time.Date(2016, time.February, 29, 23, 59, 59, 0, time.UTC)
if !eom.Equal(expected) {
t.Errorf("Expected %v was %v", expected, eom)
}
eom = GetEndOfMonth(time.Date(2015, time.February, 5, 10, 1, 2, 3, time.UTC))
expected = time.Date(2015, time.February, 28, 23, 59, 59, 0, time.UTC)
if !eom.Equal(expected) {
t.Errorf("Expected %v was %v", expected, eom)
}
eom = GetEndOfMonth(time.Date(2016, time.January, 31, 10, 1, 2, 3, time.UTC))
expected = time.Date(2016, time.January, 31, 23, 59, 59, 0, time.UTC)
if !eom.Equal(expected) {
t.Errorf("Expected %v was %v", expected, eom)
}
eom = GetEndOfMonth(time.Date(2016, time.December, 31, 10, 1, 2, 3, time.UTC))
expected = time.Date(2016, time.December, 31, 23, 59, 59, 0, time.UTC)
if !eom.Equal(expected) {
t.Errorf("Expected %v was %v", expected, eom)
}
eom = GetEndOfMonth(time.Date(2016, time.July, 31, 23, 59, 59, 0, time.UTC))
expected = time.Date(2016, time.July, 31, 23, 59, 59, 0, time.UTC)
if !eom.Equal(expected) {
t.Errorf("Expected %v was %v", expected, eom)
}
}