2016-11-04 3 views
-2

저는 새롭고 작은 콘솔 스크립트를 만들었습니다. 당신은 여기 내 코드를 확인할 수 있습니다 : 나는 관련 question을 본 적이시간이지나갑니다. 거리가 바뀌 었습니다. 거리가 멀어졌습니다.

package main 

import (
    "bufio" 
    "fmt" 
    "os" 
    "time" 
) 

func main() { 
    reader := bufio.NewReader(os.Stdin) 
    fmt.Println("Calculate") 
    fmt.Print("Hours and minutes: ") 
    start, _, _ := reader.ReadLine() 
    begin, err := time.Parse("2016-12-25 00:00:00", "2016-12-25 "+string(start)+":00") 
    if err != nil { 
     fmt.Println(err) 
    } 
    fmt.Println(begin) 
} 

을하지만 난 이유를 이해할 수 없었다. 내가 잘못 뭐하는 거지에

parsing time "2016-12-25 22:40:00": month out of range 
0001-01-01 00:00:00 +0000 UTC 

어떤 아이디어 :

이 내 코드를 실행 한 후지고있어 오류가 무엇입니까?

감사

+1

하루 전부터이 질문의 최신 버전은 어떻습니까? https://stackoverflow.com/questions/40388246/convert-string-to-time-and-parse-in-golang – JimB

+0

그래서, 구체적으로 그 날짜 여야합니까? : O – rafamds

+0

만약 정의 된 값이 없다면 함수는 각 필드의 차이를 알아야합니까? – JimB

답변

4
당신은 Jan 2, 2006 at 3:04pm (MST)

다음에 begin 줄을 변경하고 작동해야 time.Parselayout 매개 변수에 잘못된 기준 시간 사용하고

:

begin, err := time.Parse("2006-01-02 15:04:05", "2016-12-25 "+string(start)+":00")

func Parse

+0

레이아웃에이 특정 날짜가 필요한 이유를 알고 있습니까? – rafamds

+1

유닉스 시대의 시간 (https://en.wikipedia.org/wiki/Unix_time)에서 영감을 얻었습니다. 그것은 Go의 버전입니다. Go는 레이아웃을 위해 설정된 참조 시간을 가져야합니다. 그렇지 않으면 모든 프로그래머가 임의의 참조 날짜를 선택하게됩니다. – nosequeldeebee

+0

지금 얻었습니다. 감사합니다. @nosequeldeebee – rafamds