将格式化的时间转换为UTC毫秒数。

huangapple go评论83阅读模式
英文:

Convert formatted time to UTC milliseconds

问题

如何将格式为 "2009-01-01T01:02:01.111+02:00" 的时间转换为以毫秒为单位的 UTC 时间?

是否已经有用于此转换的包?我查看了 https://golang.org/src/time/format.go,但没有找到相同的格式进行转换。

英文:

How to convert time in format

2009-01-01T01:02:01.111+02:00

to UTC in milliseconds?

Is there already package for this conversion? I looked at the https://golang.org/src/time/format.go but couldn't find same format to convert.

答案1

得分: 8

使用time.Parse

示例:http://play.golang.org/p/ouiDtIVjQI

package main

import (
	"fmt"
	"time"
)

func main() {
	t, e := time.Parse(`2006-01-02T15:04:05.000-07:00`, `2009-01-01T01:02:01.111+02:00`)

	if e != nil {
		panic(e)
	}

	fmt.Println(t.UTC().UnixNano() / 1000000)
}

使用格式字符串2006-01-02T15:04:05.000-07:00作为参考日期。

英文:

Use time.Parse.

Demo: http://play.golang.org/p/ouiDtIVjQI

package main

import (
	"fmt"
	"time"
)

func main() {
	t, e := time.Parse(`2006-01-02T15:04:05.000-07:00`, `2009-01-01T01:02:01.111+02:00`)

	if e != nil {
		panic(e)
	}

	fmt.Println(t.UTC().UnixNano() / 1000000)
}

Use the format string 2006-01-02T15:04:05.000-07:00 for the reference date.

答案2

得分: 1

格式非常标准,符合ISO8601标准,因此您可以使用time.RFC3339布局,例如:

t, e := time.Parse(time.RFC3339, "2009-01-01T01:02:01.111+02:00")

...然后按照thwd的答案中所述,继续使用.UnixNano()。在src/time/format.go中可以找到更多预定义的布局。

英文:

the format is pretty standard ISO8601, so you can use the time.RFC3339 layout, e.g.

t, e := time.Parse(time.RFC3339, "2009-01-01T01:02:01.111+02:00")

...and proceed with .UnixNano() as in thwd's answer. More predefined layouts can be found in src/time/format.go.

huangapple
  • 本文由 发表于 2015年5月21日 19:30:19
  • 转载请务必保留本文链接:https://go.coder-hub.com/30372462.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定