Как отформатировать текущее время в ГГГГ-ММ-ДДЧЧ: ММ: ССЗ - PullRequest
0 голосов
/ 03 февраля 2019

Никогда не пробовал Go раньше и сейчас занимаюсь небольшим проектом.Одна из задач - получить текущее системное время и представить его в формате YYYY-MM-DDT00:00:00Z.Я считаю, что Z означает, что время представлено в формате UTC, но когда я посмотрел в дб, все временные метки были такими, то есть 2011-11-22T15:22:10Z.

Так как мне отформатировать это в Go?

Обновление Мне удалось отформатировать его, используя следующий код

t := time.Now()
fmt.Println(t.Format("2006-01-02T15:04:05Z"))

Теперь вопросостается, что Z означает здесь.Должен ли я получить время UTC?

Другой вопрос, похоже, что значение, которое я использую для форматирования, влияет на вывод, т. Е. Когда я использовал 2019-01-02T15:04:05Z, вывод стал 2029-02-02T20:45:11Z, почему?

Ответы [ 2 ]

0 голосов
/ 03 февраля 2019

"Если время соответствует Всемирному координированному времени (UTC), сразу после времени без разделительного пробела добавляется буква" Z "." ​​Z "- обозначение зоны для нулевого смещения UTC." 09:30 UTC "поэтому обозначается как «09: 30Z» или «0930Z». Аналогично, «14:45:15 UTC» записывается как «14: 45: 15Z» или «144515Z». [16] "

Fromhttps://en.wikipedia.org/wiki/Time_zone#UTC

// Some valid layouts are invalid time values for time.Parse, due to formats
// such as _ for space padding and Z for zone information.

и

// Replacing the sign in the format with a Z triggers
// the ISO 8601 behavior of printing Z instead of an
// offset for the UTC zone. Thus:
//  Z0700  Z or ±hhmm
//  Z07:00 Z or ±hh:mm
//  Z07    Z or ±hh

Из источника для пакета time / format.go

0 голосов
/ 03 февраля 2019

Go предоставляет очень гибкий способ анализа времени на примере.Для этого вам нужно записать «эталонное» время в выбранном вами формате.Исходное время составляет Mon Jan 2 15:04:05 MST 2006.В моем случае я использовал это эталонное время для разбора Now():

fmt.Println(time.Now().UTC().Format("2006-01-02T15:04:05Z"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...