Golang笔记

Golang 时区时差处理方式

个人习惯用0时区时间戳记录时间,可以方便转到不同时区

package main

import (
	"fmt"
	"time"
)

func main() {
	// 获取当前(当地)时间
	t := time.Now()
	// 获取0时区时间
	t = time.Now().UTC()
	fmt.Println(t)
	// 获取当前时间戳
	timestamp := t.Unix()
	fmt.Println(timestamp)
	// 获取时区信息
	name, offset := t.Zone()
	fmt.Println(name, offset)

	// 把时间戳转换为时间
	// 格式化时间
	sample := "2006-01-02 15:04:05"
	// 服务器时区
	fmt.Println("Current time 1 : ", time.Unix(timestamp+int64(offset), 0).Format(sample))
	// 零时区
	fmt.Println("Current time 2 : ", time.Unix(timestamp, 0).UTC().Format(sample))
	// 指定时间差
	fmt.Println("Current time 3 : ", time.Unix(timestamp+8*3600, 0).UTC().Format(sample))
	// 或
	fmt.Println("Current time 4 : ", time.Unix(timestamp, int64(8*time.Hour)).UTC().Format(sample))
	// 或
	fmt.Println("Current time 5 : ", time.Unix(timestamp, 0).UTC().Add(8*time.Hour).Format(sample))
}

在中国服务器上运行结果:

2018-01-11 07:44:25.625928252 +0000 UTC
1515656665
UTC 0
Current time 1 :  2018-01-11 15:44:25
Current time 2 :  2018-01-11 07:44:25
Current time 3 :  2018-01-11 15:44:25
Current time 4 :  2018-01-11 15:44:25
Current time 5 :  2018-01-11 15:44:25

在美国一个服务器上运行的结果:

2018-01-11 07:45:59.470730955 +0000 UTC
1515656759
UTC 0
Current time 1 :  2018-01-11 02:45:59
Current time 2 :  2018-01-11 07:45:59
Current time 3 :  2018-01-11 15:45:59
Current time 4 :  2018-01-11 15:45:59
Current time 5 :  2018-01-11 15:45:59
本文网址: https://golangnote.com/topic/220.html (转载注明出处)
关于GolangNote:记录在工作中使用golang 遇到、面临的相关问题及解决方法。如果你在这里获得一些知识或信息,解决你的编程问题,请考虑捐赠给不幸的人或者你喜欢的慈善机构,除捐赠外,种植树木、志愿服务或减少排碳的行为也很有益处。如果你有任何问题可以在下面 留言
Be the first to comment!
Captcha image
Relative Articles