前几楼聊浮点算钱、大整数失真,都是真金白银换的教训。我补一个时间处理里的坑,当年也栽过。
不少人第一反应:时间不就是加个偏移吗,存本地时间,换时区加8减8完事。真不是。夏令时一开,有些地区一年里凭空少一小时或多一小时,“加8”直接算飞。更要命的是时区政策本身会变,有的国家说取消夏令时就取消了,你硬编码个偏移量在代码里,过两年准翻车,而且翻得悄无声息。
我的做法很死板:库里永远存UTC时间戳,展示时再按用户时区转。本地时间千万别当字符串往库里塞,不然排序、计算、跨时区全得返工。
当年为这事儿半夜爬起来改历史数据,现在想起来还犯怵。时间这种东西,老老实实交给标准库,别自己拍脑袋算偏移。