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