Go
打印时间
time.Now().String()
作为
2012-12-18 06:09:18.6155554 +0200 FLEST
或
2009-11-10 23:00:00 +0000 UTC
http://play.golang.org/p/8qwq9U_Ri5
我该如何解析它?
我猜FLEST
是Finland Latvian Estonian Standard Time
,我不在这些国家,我想我可以得到所有的时区。我找不到一种统一的方法或模式来用time.Parse
解析它
发布于 2012-12-31 04:37:40
尽管time.Parse()
接受诸如2006-01-02 15:04:05 -0700 MST
之类的格式字符串,但使用在时间上定义的constants之一可能更简单。
const (
ANSIC = "Mon Jan _2 15:04:05 2006"
UnixDate = "Mon Jan _2 15:04:05 MST 2006"
RubyDate = "Mon Jan 02 15:04:05 -0700 2006"
RFC822 = "02 Jan 06 15:04 MST"
RFC822Z = "02 Jan 06 15:04 -0700" // RFC822 with numeric zone
RFC850 = "Monday, 02-Jan-06 15:04:05 MST"
RFC1123 = "Mon, 02 Jan 2006 15:04:05 MST"
RFC1123Z = "Mon, 02 Jan 2006 15:04:05 -0700" // RFC1123 with numeric zone
RFC3339 = "2006-01-02T15:04:05Z07:00"
RFC3339Nano = "2006-01-02T15:04:05.999999999Z07:00"
Kitchen = "3:04PM"
// Handy time stamps.
Stamp = "Jan _2 15:04:05"
StampMilli = "Jan _2 15:04:05.000"
StampMicro = "Jan _2 15:04:05.000000"
StampNano = "Jan _2 15:04:05.000000000"
)
如果将字符串用作存储或编码时间的方法(例如使用限制性编码格式),则可能需要考虑使用Unix time。这样,您可以只存储一个int64
(或者两个,如果您保持纳秒的数量。
发布于 2012-12-31 04:23:19
package main
import (
"fmt"
"time"
)
func main() {
fmt.Println(time.Now())
date := "2009-11-10 23:00:00 +0000 UTC"
t, err := time.Parse("2006-01-02 15:04:05 -0700 MST", date)
if err != nil {
fmt.Println("parse error", err.Error())
}
fmt.Println(t.Format(time.ANSIC))
}
游乐场:http://play.golang.org/p/hvqBgtesLd
请参阅http://golang.org/src/pkg/time/format.go?s=15404:15450#L607上的源代码
发布于 2013-01-01 22:07:49
time.String的文档给出了它使用的格式:"2006-01-02 15:04:05.999999999 -0700MST“。一开始就是使用相同的格式进行解析。
不过,时区对你来说可能是个问题。如果您必须解析您知道是用time.String生成的时间,但这些时间是在其他时区生成的,则必须具有其他时区的zoneinfo。请参阅LoadLocation下的文档。如果你不能获得zoneinfo,不能在你的系统上安装它,或者不能冒着在新的未知时区失败的风险,那么time.String格式不适合你。您必须以不同的格式获取时间戳,或者从字符串中删除时区,然后使用修改后的格式解析修改后的字符串。
https://stackoverflow.com/questions/14094228
复制相似问题