时间戳转换器
Unix时间戳与日期时间互转
日期输入和本地显示使用浏览器的本地时区。
什么是Unix时间戳?
Unix时间戳是计算机存储时间的通用方式——从1970年1月1日UTC(Unix纪元)开始经过的秒数(或毫秒数),以简单的整数表示。操作系统、数据库和API都使用这种标准方式处理日期和时间。由于与时区无关,非常适合国际化系统。
秒与毫秒的区别
10位数字是秒(如1700000000),13位数字是毫秒(如1700000000000)。JavaScript的Date.now()返回毫秒,而Unix/Linux系统调用通常使用秒。收到API响应时,通过位数即可判断单位。
时间戳优于日期字符串的原因
时间戳是简单整数,比较、排序和差值计算非常方便。日期字符串(如YYYY-MM-DD)容易因格式差异和时区混乱引发问题,而时间戳始终以UTC为基准,没有歧义。存储效率高,也有利于数据库索引优化。
时区与UTC
Unix时间戳始终以UTC(协调世界时)为基准。中国使用UTC+8(CST),显示时需要加8小时转换为本地时间。最佳实践是存储时使用UTC,仅在显示给用户时转换为本地时区。
Y2K38问题
以32位有符号整数存储的Unix时间戳将在2038年1月19日03:14:07 UTC发生溢出,这被称为Y2K38问题或Unix千年虫。64位系统不受影响,但嵌入式系统和老旧遗留系统仍面临风险,需要提前做好迁移规划。
常见问题
为什么Unix时间从1970年开始?
Unix操作系统在1969-1970年开发时,工程师将1970年1月1日定为方便的起始点。这一选择既简单又实用,在当时的计算机上易于处理。
负Unix时间戳是什么意思?
表示1970年1月1日之前的日期。例如-86400代表1969年12月31日。JavaScript的Date对象同样能正确处理负时间戳。
如何在JavaScript中获取时间戳?
使用Date.now()获取毫秒级时间戳,Math.floor(Date.now()/1000)获取秒级时间戳。new Date().getTime()与Date.now()返回相同的值。