code: func addMonth(t time.Time) time.Time {
  	if t.Day() > 28 {
  		t = time.Date(t.Year(), t.Month(), 1, t.Hour(), 0, 0, 0, t.Location())
  	}
  	t = t.AddDate(0, 1, 0)
  	return t
  }
docs: // addMonth adds a month similar to time.AddDate(0, 1, 0), but
  // in certain edge cases it doesn't normalize for days late in the month.
  // In the "YM" case where t.Day is greater than 28, there are
  // edge cases where using time.AddDate() to add a month will result
  // in two "months" being added (Jan 31 + 1mo = March 2).