Time conversion from string in golang

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

Time conversion from string in golang

问题

我正在尝试将从NOAA观测中获取的时间/日期从UTC转换为太平洋时间。原始数据格式为固定宽度的空格分隔字符串,我通过strings.Field将其转换为字符串数组。

原始数据如下:

2015 11 11 16 50

它存储为:

data[0:5]

请注意,data中还有其他观测数据,在程序的其他地方使用。如何将其转换为太平洋时间,以便全年正确,包括夏令时的更改?我最终想以RFC822格式打印出来(即"02 Jan 06 15:04 PST")。

英文:

I'm trying to convert a time/date crawled from a NOAA observation from UTC to Pacific Time. The raw data is formatted as a fixed width space delimited string that I convert into an array of strings via strings.Field.

The raw data looks like:

2015 11 11 16 50

It is stored as:

data[0:5]

Note that data has additional observations that are used elsewhere in the program. How can this be converted to Pacific time such that it will be correct year round, including daylight savings changes? I would eventually like to print it out in RFC822 format (i.e. "02 Jan 06 15:04 PST").

答案1

得分: 4

你可以使用time.Parse和Go的参考时间(https://golang.org/pkg/time/#pkg-constants)直接将原始数据解析为UTC时间,然后加载PST时区并将时间转换为该时区。然后,可以按照你的要求进行格式化,例如:

func main() {
    t, err := time.Parse("2006 01 02 15 04", "2015 11 11 16 50")
    fmt.Println(t, err)
    
    loc, err := time.LoadLocation("America/Los_Angeles")
    fmt.Println(loc, err)
    
    t = t.In(loc)
    fmt.Println(t.Format(time.RFC822))
}

http://play.golang.org/p/mIXxVhmkDB

英文:

You can parse your raw data directly to a time in UTC using time.Parse and Go's reference time (https://golang.org/pkg/time/#pkg-constants), and then load a PST location and convert the time to that location. It can then be formatted as you wish, e.g.:

func main() {
	t, err := time.Parse("2006 01 02 15 04", "2015 11 11 16 50")
	fmt.Println(t, err)
	
	loc, err := time.LoadLocation("America/Los_Angeles")
	fmt.Println(loc, err)
	
	t = t.In(loc)
	fmt.Println(t.Format(time.RFC822))
}

http://play.golang.org/p/mIXxVhmkDB

huangapple
  • 本文由 发表于 2015年11月12日 02:23:42
  • 转载请务必保留本文链接:https://go.coder-hub.com/33657280.html
匿名

发表评论

匿名网友

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

确定