Golang конвертирует между форматами времени [закрыто]

Выражения вроде ${${a}} не работают. Чтобы обойти это, вы можете использовать eval:

b=value
a=b
eval aval=\$$a
echo $aval

Выход:

value

-1
задан gkns 17 January 2019 в 03:07
поделиться

2 ответа

@icza прав. Вы должны проверить это на godoc https://golang.org/pkg/time/#Time.String

String returns the time formatted using the format string

"2006-01-02 15:04:05.999999999 -0700 MST"

. знать правильный путь.

Вот как:

formatstr:="2006-01-02 15:04:05.999999999 -0700 MST"
currentTime := time.Now().String()
t1, _ := time.Parse(formatstr, currentTime)
fmt.Println(t1.String())
0
ответ дан Billy Yuan 17 January 2019 в 03:07
поделиться

Сначала вы пропускаете ошибку, возвращаемую time.Parse() . Никогда не пропускайте ошибки.

Если вы напечатаете ошибку:

currentTime := time.Now().String()
t1, err := time.Parse(time.RFC3339, currentTime)
fmt.Println(err)
fmt.Println(t1.String())

Выведите (попробуйте на Go Playground ):

parsing time "2009-11-10 23:00:00 +0000 UTC m=+0.000000001" as "2006-01-02T15:04:05Z07:00": cannot parse " 23:00:00 +0000 UTC m=+0.000000001" as "T"
0001-01-01 00:00:00 +0000 UTC

Проблема в том, что Time.String() создает текстовое представление в формате, отличном от указанного в time.RFC3339. Time.String() производит вывод, используя формат:

"2006-01-02 15:04:05.999999999 -0700 MST"

Пока вы пытаетесь отделить его от формата:

RFC3339 = "2006-01-02T15:04:05Z07:00"

Очевидно, что это не сработает.

0
ответ дан icza 17 January 2019 в 03:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: