package main
import "fmt"
import "time"
func main() {
source := "2014-04-22 23:41:12.518845115 +0800 CST"
Form := "2014-04-22 23:41:12.518845115 +0800 CST"
t, err := time.Parse(Form, source)
if err == nil {
fmt.Println(t.String())
} else {
fmt.Println(err)
}
}
错误:parsing time "2014-04-22 23:41:12 +0800 CST": month out of range
我通过source
得到time.Now().String()
,但我无法将其转换回来。这段代码出了什么问题?
答案 0 :(得分:2)
来自文档:
Parse解析格式化的字符串并返回它的时间值 代表。 布局通过显示引用的方式来定义格式 时间,强>
Mon 1月2日15:04:05 -0700 MST 2006将被解释为
<强>值强>;它作为输入格式的一个例子。相同 然后将对输入字符串进行解释。预定义 布局ANSIC,UnixDate,RFC3339和其他描述标准和 方便的参考时间表示。欲获得更多信息 关于参考时间的格式和定义,请参阅 ANSIC的文档以及由此定义的其他常量 封装
(Bolding mine)。
所以你想要的是
Form := "2006-01-02 15:04:05.000000000 -0700 MST"
该输入字符串格式中该日期中列出的日期。我在操场上写这篇文章时需要注意的一点是,它看起来像05.000000000
部分(秒和秒的几分之一)你需要格式字符串来包含完全与要解析的字符串一样多的小数点。
这是一个游乐场版本,显示它有效:http://play.golang.org/p/dRniJbqgl7