2012-11-08 7 views
12

私は、エポック(これはもともとjava.lang.System.currentTimeMillis()呼び出しから来た)からミリ秒の文字列を持っています。この文字列をGoで人間が読めるタイムスタンプ文字列に変換する正しい方法は何ですか?Goでエポックタイムスタンプミリ秒の文字列を解析する方法は?

投稿者the time package私はParse機能を参照していますが、レイアウトはすべて標準のタイムゾーンベースの時間帯であるようです。一度Timeオブジェクトに入れば、私はFormat(Time.Stamp)を使って私が望む出力を得ることができますが、文字列をTimeオブジェクトに取り込む方法は明確ではありません。

答えて

22

エフォック以降のミリ秒はフォーマット文字列ではサポートされないため、手動で解析する必要があります。たとえば:

func msToTime(ms string) (time.Time, error) { 
    msInt, err := strconv.ParseInt(ms, 10, 64) 
    if err != nil { 
     return time.Time{}, err 
    } 

    return time.Unix(0, msInt*int64(time.Millisecond)), nil 
} 

は、実際の例と遊ぶのがhttp://play.golang.org/p/M1dWGLT8XEをチェックしてください。

+0

クイックアンサーとインタラクティブコードリンクありがとう! –

+0

あなたのソリューションは動作しますが、ナノ秒の範囲の値に対応する 'time.Unix'を利用しています。ミリ秒をナノ秒に変換していますが、実際にはミリ秒を秒に変換してナノ秒にする必要があります。あなたのソリューションの適応です:http://play.golang.org/p/XKHNPkSqgx。 – seh

+3

なぜstdlibがあなたのためにそれをしたときに、より読みにくくなり、間違ってしまうのでしょうか? docs: '範囲外のnsecを渡すことは有効です[0,999999999] .' https://golang.org/pkg/time/#Unix –