英文:
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))
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论