GoLang time.Date не выдает ошибку в течение дней, превышающих допустимые дни месяца - PullRequest
0 голосов
/ 25 мая 2020

Я пытаюсь создать экземпляр GoLang time.Date() из полученного ввода; что-то вроде:

time.Date(year, time.Month(month), day, 0, 0, 0, 0, time.UTC)

Где «год», «месяц» и «день» читаются из файла. Он отлично работает в большинстве случаев, однако, если я пропущу «2000-01-32», он автоматически интерпретируется как «2000-02-01» Пример в Go Playground .

Есть ли способ принудительно вернуть ошибку вместо переноса дня в таком случае, как abovr?

Спасибо.

1 Ответ

0 голосов
/ 25 мая 2020

Не напрямую, но вы можете сравнить проанализированное значение с заданными параметрами. Если не нормализовано, они должны быть одинаковыми.

func parse(year, month, day int) (time.Time, bool) {
  t := time.Date(year, time.Month(month), day, 0, 0, 0, 0, time.UTC)
  y, m, d := t.Date()
  return t, y == year && int(m) == month && d == day
}

В действии: https://play.golang.org/p/UJYszuyJwnx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...