时间戳转换:10位、13位 Unix 时间戳转日期
支持时间戳转时间、日期转时间戳,以及 UTC 与北京时间(UTC+8)互转;10 位按秒、13 位按毫秒识别。
一天后
一周后
时间戳转时间:10 位秒级与 13 位毫秒级
Unix 时间戳从 1970 年 1 月 1 日 00:00:00 UTC 起计时。使用 time.Unix 可以将时间戳转换为时间类型;转换为可读日期时需要明确时区。此页支持常见的北京时间 UTC+8 与协调世界时 UTC+0。
package main
import (
"fmt"
"time"
)
func main() {
unixTime := time.Date(2009, time.November, 10, 23, 0, 0, 0, time.UTC)
fmt.Println(unixTime.Unix())
t := time.Unix(unixTime.Unix(), 0).UTC()
fmt.Println(t)
}
时间戳转北京时间与 UTC
时区默认使用本地时间,也就是服务器配置的时区,也可以通过 FixedZone 来指定时区进行转换。通过time.Format方法转换成可读字符串,新版本Go引入了 DateOnly 和 TimeOnly 两个格式类型,好评👍。
package main
import (
"fmt"
"time"
)
func main() {
loc := time.FixedZone("UTC+8", 8*60*60)
t := time.Date(2009, time.November, 10, 23, 0, 0, 0, loc)
fmt.Println("The time is:", t.Format(time.RFC822))
}
Hive SQL用法
-- 1. 秒级时间戳转字符串
SELECT from_unixtime(1709614110, 'yyyy-MM-dd HH:mm:ss') AS time_str;
-- 结果:2024-03-05 14:08:30
-- 2. 毫秒级时间戳转字符串(先除以1000取整)
SELECT from_unixtime(cast(1709614110123 / 1000 AS BIGINT), 'yyyy-MM-dd HH:mm:ss') AS time_str;
-- 结果:2024-03-05 14:08:30
Excel 用法
=TEXT((A2/86400000 + 8/24) + DATE(1970,1,1), "yyyy-mm-dd hh:mm:ss")
常见问题
- 10 位和 13 位时间戳有什么区别?
- 10 位通常表示秒,例如
1700000000;13 位通常表示毫秒,例如1700000000000。 - 为什么转换后的时间相差 8 小时?
- 时间戳本身以 UTC 为基准。查看北京时间时请选择 UTC+8;存储和接口传输通常建议统一使用 UTC。
- 可以一次转换多条时间戳吗?
- 可以,点击上方“批量转换”,每行输入一个 10 位或 13 位时间戳即可导出结果。
Feedback