【Ir】Calcular la edad según el documento de identidad (o fecha de nacimiento)

Ejemplos

Por supuesto, calculamos la edad del usuario únicamente en función de la información de su fecha de nacimiento. Aquí definimos: después de que el usuario nace hace más de 1 año, la edad se cuenta como 1 año, si es menos de 1 año se cuenta como 0 años, y así sucesivamente, si es más de 1 año y menos de 2 años, se cuenta como 1 año.

1) Obtener la fecha de nacimiento del usuario según la información de la tarjeta de identificación

2) Calcular la edad actual del usuario según la fecha de nacimiento.

reglas de la tarjeta de identificación

Número de tarjeta de identificación de 18 dígitos: el número de tarjeta de identificación de segunda generación de 18 dígitos es un código de combinación característico, que consta de un código corporal de diecisiete dígitos y un código de verificación de un dígito. El orden de izquierda a derecha es: código de dirección de seis dígitos, código de fecha de nacimiento de ocho dígitos, código de secuencia de tres dígitos y código de verificación de un dígito. Código de dirección (primeros seis dígitos): Indica el código de división administrativa de la provincia, ciudad y condado (ciudad, bandera, distrito) donde se ubica la residencia permanente del objeto de codificación de la cédula de identidad, y se implementa de acuerdo con las disposiciones de GB/T2260. Entre ellos: los primeros 1 y 2 dígitos representan el código de la provincia; el 3.º y 4.º dígitos representan el código de la ciudad; los 5.º y 6.º dígitos representan el código del condado (ciudad, bandera, distrito).

Número de cédula de identidad de 15 dígitos: 1. Los primeros seis dígitos son el código de división administrativa, se refiere a la región administrativa donde se encuentra la residencia permanente del ciudadano cuando solicita por primera vez una cédula de identidad de residente. 2. Los dígitos del 7.º al 12.º son el código de fecha de nacimiento; los dígitos 7.º y 8.º son el año de nacimiento (dos dígitos), los dígitos 9.º y 10.º son el mes de nacimiento y los dígitos 11.º y 12.º representan la fecha de nacimiento. nacimiento. 3. Los dígitos 13 al 15 son el código de secuencia de asignación, es un número de secuencia que se asigna de manera uniforme y razonable a cada persona en un orden fijo según la población. El último dígito es un número impar y se asigna a los hombres, y a las mujeres se les asigna un número par.

Código de ejemplo

package main

import (
	"fmt"
	"strconv"
	"time"
)

// getBirthday 根据身份证获取对应生日
func getBirthday(cardId string) string {
    
    
	// 兼容第一代15位身份证号码
	if len(cardId) == 15 {
    
    
		// 第一代身份证年份都是19开头的
		return fmt.Sprintf("19%s", cardId[6:12])
	} else {
    
    
		return cardId[6:14]
	}
}

// getAgeByBirthday 根据生日日期得到用户年龄
func getAgeByBirthday(birthday string) int {
    
    
	year, _ := strconv.Atoi(birthday[0:4])
	month, _ := strconv.Atoi(birthday[4:6])
	day, _ := strconv.Atoi(birthday[6:])

	// 计算当前日期与生日中年月日都差值
	now := time.Now()
	age := now.Year() - year
	moreMonth := int(now.Month()) - month
	moreDay := now.Day() - day

	// 未到生日月份,或者到了月份,但未到生日日期,年龄都要减1岁
	if moreMonth < 0 || (moreMonth == 0 && moreDay < 0) {
    
    
		age--
	}
	// 不要出现负值
	if age < 0 {
    
    
		age = 0
	}

	return age
}

func main() {
    
    
	// 支持15位身份证号码
	cardId1 := "320311770706002"
	birthday1 := getBirthday(cardId1)
	age1 := getAgeByBirthday(birthday1)
	fmt.Println(age1)
	// 当前时间:2023-10-10,输出:46

	// 支持18位身份证号码
	cardId2 := "511702198002221308"
	birthday2 := getBirthday(cardId2)
	age2 := getAgeByBirthday(birthday2)
	fmt.Println(age2)
	// 当前时间:2023-10-10,输出:43
}

Supongo que te gusta

Origin blog.csdn.net/weixin_43874301/article/details/133742094
Recomendado
Clasificación