2016-11-04 3 views
-2

私は新しいです。私は少しコンソールスクリプトを作成していました。あなたがここに私のコードを確認することができます。時間が経過しました。「月が範囲外です」エラーが発生しました

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) 
} 

を私は、関連questionを見てきましたが、なぜ私は理解できませんでした。

これは私が私のコードを実行した後に取得していますエラーです:

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

これはUnixのエポックタイムhttps://en.wikipedia.org/wiki/Unix_timeからインスピレーションを受けています。それはゴーのバージョンです。 Goは、レイアウトのために設定された参照時間を持つ必要があります。そうでなければ、すべてのプログラマーは任意の参照日付を選択するだけです。 – nosequeldeebee

+0

私は今それを得る、thanks @nosequeldeebee – rafamds

関連する問題