2015-06-26 4 views
1

Я пытаюсь разобрать этот шаблон строки "4-JAN-12 9:30:14" в time.Time.time.Parse with custom layout

Пробовал time.Parse("2-JAN-06 15:04:05", inputString) и многие другие, но не смог заставить его работать.

Я читал http://golang.org/pkg/time/#Parse и https://gobyexample.com/time-formatting-parsing, но, похоже, таких примеров нет.

Спасибо!

Edit: полный код:

type CustomTime time.Time 

func (t *CustomTime) UnmarshalJSON(b []byte) error { 
    auxTime, err := time.Parse("2-JAN-06 15:04:05", string(b)) 
    *t = CustomTime(auxTime) 
    return err 
} 

разборе времени "" 10-JAN-12 11:20:41 "" как "2-JAN-06 15:04:05": не может синтаксического анализа «» 24-JAN-15 10:27:44 «» как «2»

ответ

2

не знаю, что вы сделали неправильно (должны размещать свой код), но это действительно только простой вызов функции :

s := "4-JAN-12 9:30:14" 
t, err := time.Parse("2-JAN-06 15:04:05", s) 
fmt.Println(t, err) 

Выходы:

2012-01-04 09:30:14 +0000 UTC <nil> 

Попробуйте на Go Playground.

Обратите внимание, что time.Parse() возвращает 2 значения: разобранное значение time.Time (при синтаксическом разборе) и необязательное значение error (если синтаксический разбор не выполняется).

Смотрите следующий пример, где я намеренно указать неверный входной строки:

s := "34-JAN-12 9:30:14" 

if t, err := time.Parse("2-JAN-06 15:04:05", s); err == nil { 
    fmt.Println("Success:", t) 
} else { 
    fmt.Println("Failure:", err) 
} 

Выход:

Failure: parsing time "34-JAN-12 9:30:14": day out of range 

Попробуйте на Go Playground.

EDIT:

Теперь, когда вы публикуемый код и сообщение об ошибке, ваша проблема в том, что ваша входной строка содержит начальную и завершающую кавычку!

Снимите верхний и задний кавычки, и он будет работать. Это ваш случай:

s := `"4-JAN-12 9:30:14"` 

s = s[1 : len(s)-1] 
if t, err := time.Parse("2-JAN-06 15:04:05", s); err == nil { 
    fmt.Println("Success:", t) 
} else { 
    fmt.Println("Failure:", err) 
} 

Output (попробуйте на Go Playground):

Success: 2012-01-04 09:30:14 +0000 UTC 
+0

Ваш код, кажется, равна моей, и работать. Как странно ... Спасибо за ответ. –

+0

Stil wont work in my case. –

+1

@EzequielMoreno Проблема в вашем случае состоит в том, что ваша строка ввода содержит указатель ведущей и задней кавычек как часть строки. Удалите их, и он будет работать. См. Отредактированный ответ. – icza