时间戳转换

时间戳转字符串

将Unix时间戳转换成北京时间

时间戳
计算单位
北京时间

字符串转时间戳

将北京时间转换成Unix时间戳

北京时间
计算单位
时间戳
Unix时间戳

Timestamp即时间戳,它表示某一时间的唯一标识。在Unix和许多Unix-like系统中,时间戳通常被定义为自1970年1月1日(UTC时区)午夜起的秒数(不包含闰秒)。这样的时间戳通常被称为Unix Timestamp。

基本概念

定义:时间戳是一种能表示一份数据在某个特定时间点已经存在的、完整的、可验证的数据,通常是一个字符序列,唯一地标识某一刻的时间。

作用:它可以用来记录数据的创建、修改或访问时间,为数据提供时间上的标识,确保数据的时间顺序和完整性,在很多领域都有重要应用。

常用时间戳编程方法

获取当前时间戳:

PHP: time()获取秒级时间戳,microtime(true)获取毫秒级时间戳

JavaScript: Date.now()获取毫秒级时间戳,Math.floor(Date.now()/1000)获取秒级时间戳

Python: import time; time.time()获取带毫秒的时间戳

Java: System.currentTimeMillis()/1000获取秒级时间戳,System.currentTimeMillis()获取毫秒级时间戳

Go: time.Now().Unix()获取秒级时间戳,time.Now().UnixNano()/1e6获取毫秒级时间戳

Ruby: Time.now.to_i获取秒级时间戳,Time.now.to_f获取带毫秒的时间戳

时间戳转日期:

PHP: date('Y-m-d H:i:s', $timestamp)

JavaScript: new Date(timestamp * 1000).toLocaleString()

Python: datetime.fromtimestamp(timestamp).strftime('%Y-%m-%d %H:%M:%S')

Java: new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(timestamp * 1000L))

Go: time.Unix(timestamp, 0).Format("2006-01-02 15:04:05")

Ruby: Time.at(timestamp).strftime("%Y-%m-%d %H:%M:%S")

日期转时间戳:

PHP: strtotime('2024-01-01 00:00:00')

JavaScript: new Date('2024-01-01').getTime()/1000

Python: int(time.mktime(time.strptime('2024-01-01 00:00:00', '%Y-%m-%d %H:%M:%S')))

Java: new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2024-01-01 00:00:00").getTime()/1000

Go: time.Parse("2006-01-02 15:04:05", "2024-01-01 00:00:00").Unix()

Ruby: Time.parse("2024-01-01 00:00:00").to_i

Unix时间戳常见问题

时区问题:时间戳本身是不带时区信息的,在转换时需注意当前系统时区设置。建议存储UTC时间戳,显示时再根据用户时区转换。

2038年问题:32位系统的Unix时间戳最大值为2147483647,对应到2038年1月19日03:14:07。超过这个时间会发生溢出,建议使用64位时间戳。

精度问题:根据实际需求选择秒级(10位)或毫秒级(13位)时间戳。在JavaScript中Date.now()返回的是毫秒级时间戳,需要注意转换。

格式转换:在不同编程语言间传递时间时,建议统一使用时间戳,避免各种日期格式带来的解析问题。