Begin Golang : «время»

Эта статья является частью серии Begin Go: содержит мой опыт изучения языка Go. Любые отзывы будут очень признательны.

Парсинг времени строки

Выполняя упражнение из go-трека exercism, я столкнулся с проблемой при разборе time string.
Я пытался разобрать 7/13/2020 20:32:00, но получаю время с пустым значением: 0001-01-01 00:00:00 +0000 UTC.

Пользовательский Layout

В языке Go мы форматируем и разбираем время с помощью шаблонного Layout, который имеет тип string. Вы можете прочитать статью на gobyexample.com.

Вот код, который я использовал для разбора приведенной выше строки:

date := "7/13/2020 20:32:00"
t, _ := time.Parse("01/02/2006 15:04:05", date)
fmt.Print(t)
// 0001-01-01 00:00:00 +0000 UTC 
Войти в полноэкранный режим Выйти из полноэкранного режима

С ведущим нулем или без него

Моя ошибка в том, что я использовал ведущий ноль для разбора даты и месяца, когда я не должен был использовать ведущие нули. Разбор был успешным после того, как я изменил свой код на :

t, _ := time.Parse("1/02/2006 15:04:05", date)
Войти в полноэкранный режим Выйти из полноэкранного режима

Неправильное использование ведущего нуля для даты, месяца и т.д. может привести к потенциальным ошибкам. Поэтому всегда обращайте внимание на то, следует ли использовать ведущий ноль или нет в Layout для форматирования/разбора времени.

Запоминание представления времени в Layout

Go имеет другое представление времени для форматирования времени по сравнению с другими языками. Другие языки обычно используют такие представления времени, как HH или m для представления месяца или часа.

Представления времени в Go приведены ниже:

Представление Представление
месяц
дата
15 час
04 минута
05 секунда
2006 год
07:00 смещение времени (часовой пояс)

Вопрос в том, нужно ли нам искать эти представления времени каждый раз, когда мы используем time? Или, может быть, есть другой способ запомнить эти символы?

Глядя на таблицу выше, мы можем увидеть шаблон, который соответствует хорошо известному формату времени с одним исключением. Блок кода ниже покажет, как я могу запомнить представление времени:

// Well known time format
"Jan 02 2016 15:04:05+07:00"
// Move back the year, right before time offset / time zone.
"Jan 02 15:04:05 2016 +07:00"
// Changing to number presentation, 
// will show a pattern of an incrementing numbers
"01 02 03:04:05 2016 +07:00"
Вход в полноэкранный режим Выход из полноэкранного режима

Ссылки

  • Формат времени и синтаксический анализ на gobyexamples

Атрибуция

  • Персонаж Go Gopher создан Renee French

Оцените статью
devanswers.ru
Добавить комментарий