Каждая часть даты используется в качестве индекса:
Jan -> 1 -> Month
2 -> 2 -> Day-of-Month
15 = 3PM -> 15/3 -> hour
04 -> 4 -> minute
05 -> 5 -> second
2006 -> 6 -> year
-0700 -> 7 -> time-zone
Так согласно документу:
С MST является GMT-0700, начало отсчета времени можно рассматривать как 01/02 3:04:05 PM '06 -0700
Это упрощает метод time.Format
для анализа характеристик формата даты для человека, которые визуально идентичны желаемому результату.
Сравните это, например, с функцией strftime
C, которая использует жесткие для запоминания строки формата, такие как "%a, %d %b %y %T %z"
, который представляет формат даты, соответствующий RFC 822.
Идентификационный номер Go: "Mon, 02 Jan 06 15:04 MST"
.
time.Format
будет tokenize эту строку и проанализировать каждое слово.
- пн признано litteraly в понедельник, так что это название дня недели в
- запятая остается нетронутой
- 02 распознаются как целое значение 2, представляющего день-месяц в индексе
- Ян является известным английской аббревиатурой января месяца, так что это используется для месяца части
- 06 6 так что год часть
- 15 эквивалентно 3 и представляет час
':'
персонаж остается нетронутым
- 04 является 4, поэтому минутная
- MST интерпретируется litteraly
См http://golang.org/src/time/format.go?s=12714:12756#L117 для точного алгоритма.
Подсказка, попробуйте использовать числовые значения для каждой части – SirDarius
Хахаха пожелал, чтобы я посмотрел немного ближе – soroushjp