为什么软件用一个巨大的数字而不是日历日期来存时间
把时间存储成一个单一整数,而不是结构化的日期对象,能让两个时刻的比较、事件列表的排序,以及计算经过时间(比如"这两个事件之间相隔多少秒")都变成简单的四则运算,而不是需要考虑日历规则的复杂计算。这种方式还能在人真正需要读取这个数值之前,完全回避掉时区和日期格式方面的歧义。
实际开发中在哪些地方会遇到原始Unix时间戳
日志文件、数据库记录、接口返回结果、URL参数、Cookie过期时间等,通常都会用原始Unix数字而不是格式化好的日期字符串来存储时间,原因正是它足够紧凑、没有歧义,而且便于比较。把这个原始数字转换成可读的形式,是软件开发中最常见的日常任务之一。
常见问题
为什么我的时间戳数值看起来恰好相差1000倍?
这几乎总是秒和毫秒混淆造成的。根据接收方系统实际期望的格式,把数值乘以1000或除以1000即可。
换个时区,Unix时间戳的数值会变吗?
不会。对同一个时刻而言,不管身处世界哪个地方,这个底层数字都是完全相同的。会变的只是根据转换时所应用的时区,显示出来的那串人类可读的日期时间字符串。