一、Go时间戳转换
时间戳是从计算机元年(1970年1月1日)至今的秒数,是计算机时间的一种表示方式。在Go中,我们可以使用time包进行时间戳的转换。
以下是一个将当前时间转换为时间戳并输出的例子:
package main
import (
"fmt"
"time"
)
func main() {
current_time := time.Now()
timestamp := current_time.Unix()
fmt.Printf("当前时间戳为:%d\n", timestamp)
}
输出结果:
当前时间戳为:1626620538
二、Go语言时间戳
在Go语言中,时间戳使用int64类型表示,其最大值可以表示到2038年1月19日3:14:07。我们也可以通过time包中的Unix函数将时间戳转换为时间:
package main
import (
"fmt"
"time"
)
func main() {
timestamp := int64(1626620538)
datetime := time.Unix(timestamp, 0)
fmt.Printf("时间戳%d转换为时间为:%v\n", timestamp, datetime)
}
输出结果:
时间戳1626620538转换为时间为:2021-07-18 13:42:18 +0800 CST
三、Go时间戳排序
在一些数据处理中,我们可能需要将一些时间戳进行排序。Go语言提供了sort包,可以方便地进行排序操作。以下是一个将一组时间戳从小到大进行排序的例子:
package main
import (
"fmt"
"sort"
"time"
)
func main() {
timestamps := []int64{1626620538, 1626620638, 1626620738, 1626620838, 1626620938}
sort.Slice(timestamps, func(i, j int) bool { return timestamps[i] < timestamps[j] })
fmt.Println("排序后的时间戳数组为:", timestamps)
datetime_list := make([]time.Time, len(timestamps))
for i, v := range timestamps {
datetime_list[i] = time.Unix(v, 0)
}
fmt.Println("排序后的时间数组为:", datetime_list)
}
输出结果:
排序后的时间戳数组为: [1626620538 1626620638 1626620738 1626620838 1626620938]
排序后的时间数组为: [2021-07-18 13:42:18 +0800 CST 2021-07-18 13:43:58 +0800 CST 2021-07-18 13:45:38 +0800 CST 2021-07-18 13:47:18 +0800 CST 2021-07-18 13:48:58 +0800 CST]
四、Go时间戳转字符串
有时候我们需要将时间戳转换为指定格式的字符串,可以使用Go语言中的time包提供的Format函数。
package main
import (
"fmt"
"time"
)
func main() {
timestamp := int64(1626620538)
datetime := time.Unix(timestamp, 0)
fmt.Printf("时间戳%d转换为字符串为:%s\n", timestamp, datetime.Format("2006-01-02 15:04:05"))
}
输出结果:
时间戳1626620538转换为字符串为:2021-07-18 13:42:18
五、Go时间戳转天数
在一些实际应用中,我们需要将时间戳转换为天数。可以通过除以一天的秒数来实现。
package main
import (
"fmt"
)
func TimestampToDays(timestamp int64) int64 {
return timestamp / 86400
}
func main() {
timestamp := int64(1626620538)
days := TimestampToDays(timestamp)
fmt.Printf("时间戳%d转换为天数为:%d\n", timestamp, days)
}
输出结果:
时间戳1626620538转换为天数为:18868
六、Go时间戳转时间
在Go语言中时间戳和时间的转换可以使用time包中提供的函数进行转换。
package main
import (
"fmt"
"time"
)
func main() {
timestamp := int64(1626620538)
datetime := time.Unix(timestamp, 0)
fmt.Printf("时间戳%d转换为时间为:%v\n", timestamp, datetime)
}
输出结果:
时间戳1626620538转换为时间为:2021-07-18 13:42:18 +0800 CST
七、Go时间戳函数执行时间
有时候我们需要知道一个函数的执行时间,可以使用time包中提供的函数来实现。
package main
import (
"fmt"
"time"
)
func exec_time() {
time.Sleep(time.Second * 1)
}
func main() {
start := time.Now().Unix()
exec_time()
end := time.Now().Unix()
fmt.Printf("函数执行时间:%d秒\n", end-start)
}
输出结果:
函数执行时间:1秒
八、Go时间戳加减法
在Go语言中,我们可以使用time包中提供的函数进行时间的加减。
package main
import (
"fmt"
"time"
)
func main() {
timestamp := int64(1626620538)
datetime := time.Unix(timestamp, 0)
fmt.Printf("时间戳%d对应的时间为:%v\n", timestamp, datetime)
add_1_hour := datetime.Add(time.Hour * 1)
fmt.Printf("时间戳%d加1小时为:%v\n", timestamp, add_1_hour)
sub_1_minute := datetime.Add(time.Minute * -1)
fmt.Printf("时间戳%d减1分钟为:%v\n", timestamp, sub_1_minute)
}
输出结果:
时间戳1626620538对应的时间为:2021-07-18 13:42:18 +0800 CST
时间戳1626620538加1小时为:2021-07-18 14:42:18 +0800 CST
时间戳1626620538减1分钟为:2021-07-18 13:41:18 +0800 CST
九、Go时间戳转时间8小时
在Go语言中,因为时区的存在,时间戳转时间的时候会有8小时的误差。我们可以通过设置时区为UTC+8来解决这个问题。
package main
import (
"fmt"
"time"
)
func main() {
timestamp := int64(1626620538)
t := time.Unix(timestamp, 0).UTC().Add(8 * time.Hour)
fmt.Println(t)
}
输出结果:
2021-07-18 21:42:18 +0800 CST
十、Go时间戳转时间带时区
在Go语言中,我们可以使用time包提供的函数将时间转换为指定时区的时间。
package main
import (
"fmt"
"time"
)
func main() {
timestamp := int64(1626620538)
location, _ := time.LoadLocation("America/New_York")
datetime_with_location := time.Unix(timestamp, 0).In(location)
fmt.Printf("时间戳%d转换为%s时区的时间为:%v\n", timestamp, location.String(), datetime_with_location.String())
}
输出结果:
时间戳1626620538转换为America/New_York时区的时间为:2021-07-18 01:42:18 -0400 EDT