6 releases
0.3.0 | Aug 15, 2023 |
---|---|
0.2.0 | Jun 3, 2021 |
0.1.4 | May 4, 2021 |
0.1.2 | Apr 29, 2021 |
#3 in #china
245KB
4K
SLoC
Chinese Identity Card Utilities
中国身份证号码解析校验工具
🎉 归属地信息已更新至 2022 年(民政部官方数据)
特点
- 号码 15 位升 18 位
- 号码有效性校验
- 解析号码相关信息
- 查询号码归属地信息
- 支持港澳台身份证号码校验
- 生成 18 位身份证号码
用法
Cargo.toml 中添加依赖:
[dependencies]
idcard = "0.3"
例子
解析号码信息
use idcard::Identity;
let id = Identity::new("632123820927051");
id.number(); // 18位号码
id.gender(); // 性别
id.age(); // 当前年龄
id.age_in_year(2020); // 计算相对年龄
id.year(); // 出生年份
id.month(); // 出生月份
id.day(); // 出生日
id.birth_date(); // 出生年月日(格式:yyyy-mm-dd)
id.chinese_era(); // 天干地支
id.chinese_zodiac(); // 生肖
id.constellation(); // 星座
id.province(); // 省份
id.region(); // 号码归属地
id.region_code(); // 归属地代码
id.is_valid(); // 判断号码是否有效
id.is_empty(); // 判断号码是否为空
id.len(); // 号码长度
港澳台身份证
use idcard::{hk, mo, tw};
// 香港身份证
hk::validate("G123456(A)");
// 澳门身份证
mo::validate("1123456(0)");
// 台湾身份证
tw::validate("A123456789");
查询号码归属地
use idcard::region;
region::query("632123");
生成身份证号码
use idcard::{fake, Gender};
// 生成身份证号码
fake::new("654325", 2018, 2, 28, Gender::Male);
// 随机生成身份证号码
fake::rand();
// 根据参数随机生成身份证号码
let opts = fake::FakeOptions::new()
.region("3301")
.min_year(1990)
.max_year(2000)
.female();
fake::rand_with(&opts);
其它方法
// 15位号码升18位
idcard::upgrade("632123820927051");
// 15/18位号码校验
idcard::validate("632123820927051");
// 返回年份对应的生肖
idcard::chinese_zodiac(2021);
// 返回年份对应的天干地支
idcard::chinese_era(2021);
// 返回月日对应的星座
idcard::constellation(2, 29);
资料来源
部分算法代码参考于网络
License MIT
Dependencies
~3.5–4.5MB
~77K SLoC