2015-01-22 2 views
3

Какое значение time.Format Go (в расположение струн) опорного времени, а именно:Каково значение времени времени Go.Format (макет строки)?

пн 2 января 15:04:05 -0700 MST 2006

Это конкретное время не могло быть выбраны совершенно случайно, не так ли?

Источник: http://golang.org/pkg/time/#Time.Format

+1

Подсказка, попробуйте использовать числовые значения для каждой части – SirDarius

+0

Хахаха пожелал, чтобы я посмотрел немного ближе – soroushjp

ответ

11

Каждая часть даты используется в качестве индекса:

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 для точного алгоритма.

2

В американском формате даты, это Mon, 1/2 03:04:05 PM 2006 -0700.

1, 2, 3, 4, 5, 6, 7.

Смежные вопросы