前两天又被时间这个老冤家坑了一回。我们那套日志系统当初图省事,入库直接落本地时间字符串,结果上了分布式,机器分布在不同时区,聚合日志时时间线全对不上,排查问题像盲人摸象,先后都说不清。
更阴的是夏令时。切换当天同一个本地时刻会凭空出现两次,或者干脆消失一小时,按时间一排序,结果直接乱套,看着跟穿越了似的。
有人觉得用long存毫秒就稳了,其实也别大意。早年见过把秒当毫秒塞进去的,时间缩水一千倍;还有人用32位整型存,跑着跑着溢出变负数,时间戳直接退回公元前。所以时间这块,一律UTC落地、展示层再转本地,单位跟类型先对齐,能省掉后面一大堆麻烦。你们踩过时区的坑吗?