根据身份证号自动生成生日一些年月会少一天?

如题,网上查了说是1986-1991年有夏令时导致日期会少一天,但是用了网上在getBirthday方法上加TimeZone.setDefault(TimeZone.getTimeZone("GMT+08"))这行代码后发现第一次请求的时候还是返回错误的生日,但是第二次请求开始就返回对的生日了,不知道是什么原因?


回答:

夏令时只是加1个小时,中国大陆地区实行夏令时的时间段为:

1986年5月4日至9月14日(1986年因是实行夏令时的第一年,从5月4日开始到9月14日结束)

1987年4月12日至9月13日;

1988年4月10日至9月11日;

1989年4月16日至9月17日;

1990年4月15日至9月16日;

1991年4月14日至9月15日。

你所谓转换的问题,大概是这样的,要么是前端传了一个具体的时间给你比如'1986-06-01 00:00:00',要么是你在生成日期的时候,直接把日期'1986-06-01'取了个datetime得到了'1986-06-01 00:00:00',这个时间在『1986年5月4日至9月14日』内,那么getBirthday会减1个小时,你会得到'1986-05-31 23:00:00',看上去日期提前了一天。但是如果一个时间不在夏令时段以内,比如'1986-04-01 00:00:00'这个时间getBirthday就不会减1个小时。

希望能帮助到你。


回答:

身份证提取生日,这不是一个截取字符串的问题吗? 怎么还需要计算??


回答:

直接从身份证号中截取年/月/日,重新组合一下就可以得到 yyy-MM-DD 格式的生日,不需要用到日期处理函数啊。

const id = "11010119900307969X";    // 这是一个随机生成的身份证号

const birthday = `${id.slice(6, 10)}-${id.slice(10, 12)}-${id.slice(12, 14)}`;

console.log(birthday);

以上是 根据身份证号自动生成生日一些年月会少一天? 的全部内容, 来源链接: utcz.com/p/944583.html

回到顶部