一、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
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/279633.html