"东八区"不是一个统一司法区,所以没有一套通用夏令时区间。
如果你指的是你这次问题相关的中国大陆(Asia/Shanghai / 北京时间),官方 DST 区间(精确到切换时刻)是:
年份
夏令时开始
夏令时结束
1986
1986-05-04 02:00(拨到 03:00)
1986-09-14 02:00(回拨到 01:00)
1987
1987-04-12 02:00
1987-09-13 02:00
1988
1988-04-17 02:00
1988-09-11 02:00
1989
1989-04-16 02:00
1989-09-17 02:00
1990
1990-04-15 02:00
1990-09-16 02:00
1991
1991-04-14 02:00
1991-09-15 02:00
补充两个你排查时常用的结论:
- 中国大陆自 1991-09-15 之后不再实行夏令时。
- 你若按"生日=当天 00:00:00"去计算,开始日当天 00:00 还没切换,结束日当天 00:00 仍在夏令时,这会影响你"按天"判断边界。
今天线上突然来了一个问题急需解决,就是客户的身份证是:****** 19890913 ****
这种在夏令时区间内的,需要解析出来并保存到数据库中,最终到了数据库后就自动少了一天
让Codex给我修改了几个版本,都是无功而返。
最终用了最最最原始的方式解决了这个问题:在夏令时间内,默认加一天,game over