Форматирование даты-времени в go
Feb. 29th, 2016 08:59 am![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
And now for something completely different: чтобы описать произвольный формат даты-времени в go используется дичайшее решение: "укажите, как будет выглядеть в вашем формате дата 02/Jan/2006:15:04:05 -0700"
Т.е. month=1, day=2, year=2006/6, hour=15/3PM, minute=4, second=5, timezone=-7
Вроде бы однозначное представление получается, но выглядит после других языков дико.
Т.е. month=1, day=2, year=2006/6, hour=15/3PM, minute=4, second=5, timezone=-7
Вроде бы однозначное представление получается, но выглядит после других языков дико.
no subject
Date: 2016-02-29 11:05 am (UTC)1. Один из стандартных методов форматирования — RFC 3339, который и есть, с практической точки зрения, ISO 8601. Только бесплатный.
2. Стандартный способ представления времени в строку очень похож, но всё-таки не является ISO8601. Как минимум, таймзона там неправильно отформатирована. Откуда они взяли этот дефолт?..
3. Форматтеру действительно нужно дать строку с примером. Чтобы получить ISO 8601 нужно сделать
value.Format(time.RFC3339)
, а если ещё без таймзоны, тоvalue.UTC().Format(time.RFC3339)
. При этом time.RFC3339 — это просто predefined константа строки"2006-01-02T15:04:05Z07:00"
.4. Форматтер там наивный, работать будет медленновато, формат не кэширует, но, видимо, подходит для сельской местности.