2016-03-31 2 views
2

У меня есть следующая строка: Дата 2017-09-04T04: 00: 00ZРазбор golang объект времени от неполного строки

Мне нужно, чтобы разобрать эту строку в то время golang, чтобы иметь единые данные по моей заявление. Вот код до сих пор:

parsedTime := "2017-09-04T04:00:00Z" 
test, err := time.Parse(time.RFC3339, parsedTime) 
check(err) 
fmt.Println(test) 

Я получаю следующее сообщение об ошибке при попытке запустить программу:

": extra text: 0:00 +0000 UTC parsing time "2017-09-04T04:00:00Z 

Как я могу либо добавить дополнительный текст, который он ищет или получить синтаксический анализатор, чтобы остановить поиск после Z?

Я также попытался следующие:

parsedTime := "2017-09-04T04:00:00Z" 
test, err := time.Parse("2006-01-02T03:04:05Z", parsedTime) 
check(err) 
fmt.Println(test) 

который возвращает следующую ошибку:

": extra text: 017-09-04T04:00:00Z 
+1

Ваш второй пример [кажется, работает отлично] (http://play.golang.org/p/pJLSyTueOV) –

+1

Я не уверен, что это полный пример ... оба формата, похоже, работают отлично для меня с go1.6 –

ответ

1

Оба формата вы использовали работу с текущей версией Go: https://play.golang.org/p/Typyq3Okrd

var formats = []string{ 
    time.RFC3339, 
    "2006-01-02T03:04:05Z", 
} 

func main() { 
    parsedTime := "2017-09-04T04:00:00Z" 

    for _, format := range formats { 
     if test, err := time.Parse(format, parsedTime); err != nil { 
      fmt.Printf("ERROR: format %q resulted in error: %v\n", format, err) 
     } else { 
      fmt.Printf("format %q yielded %s\n", format, test) 
     } 
    } 
} 

Можете ли вы представить рабочий пример, демонстрирующий вашу проблему? Вы можете использовать go playground для общедоступных фрагментов.