前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >IDCard中国身份证号码解析

IDCard中国身份证号码解析

作者头像
徐建国
发布2024-07-05 14:55:42
990
发布2024-07-05 14:55:42
举报
文章被收录于专栏:个人路线

一、下载安装

代码语言:javascript
复制
ohpm install @nutpi/idcard

OpenHarmony ohpm 环境配置等更多内容,请参考如何安装 OpenHarmony ohpm 包[2]

二、使用

代码语言:javascript
复制
import { parserChina, parserInternational } from '@nutpi/idcard/src/main/module/method';

代码示例:

代码语言:javascript
复制
parserChina('11010519491231002X')

返回:

代码语言:javascript
复制
    {
        "type":"居民身份证",
        "country":"中国",
        "sign":"北京市朝阳区",
        "birthday":"1949-12-31",
        "sex":"女",
        "isValid":false
    }

代码示例:

代码语言:javascript
复制
parserInternational('932682198501010017')

返回

代码语言:javascript
复制
    {
        "type":"外国人永久居留身份证",
        "country":"沙特阿拉伯",
        "sign":"江苏省",
        "birthday":"1985-01-01",
        "sex":"男",
        "isValid":true
    }

完整示例:

代码语言:javascript
复制
import { parserChina, parserInternational } from '@nutpi/idcard/src/main/module/method';

export class IdCardInfo {
  type: string = ""
  country: string = ""
  sign: string = ""
  birthday: string = ""
  sex: string = ""
  isValid: string = ""
}

@Entry
@Component
struct Index {
  @State IdCardInfo: IdCardInfo = new IdCardInfo();
  aboutToAppear(): void {
    this.IdCardInfo = JSON.parse(JSON.stringify(parserChina('11010519491231002X')))

  }

  build() {
    Column() {
      Text(JSON.stringify(parserInternational('932682198501010017')))
        .fontSize(20)

      Text(this.IdCardInfo.type)
        .fontSize(30)
      Text(this.IdCardInfo.country)
        .fontSize(30)
      Text(this.IdCardInfo.sign)
        .fontSize(30)
      Text(this.IdCardInfo.birthday)
        .fontSize(30)
      Text(this.IdCardInfo.sex)
        .fontSize(30)

    }
    .height('100%')
    .width('100%')
  }
}

三、背景

居民身份证是国家法定的证明公民个人身份的证件。根据〖中华人民共和国国家标准 GB11643-1999〗中有关公民身份号码的规定,公民身份号码是特征组合码,由 17 位数字本体码和 1 位校验码组成。排列顺序从左至右依次为:6 位数字地址码,8 位数字出生日期码,3 位数字顺序码和 1 位数字校验码。

第 1-6 位为地址码,表示编码对象常住户口所在县(市、镇、区)的行政区划代码。

第 7-14 位为出生日期码,表示编码对象出生的年、月、日,按 GB/T7408 的规定执行,年、月、日代码之间不用分隔符。

第 15-17 位为顺序码,是同一地址码所标示的区域范围内,对同年同月同日生的居民编订的顺序码。其中第 15、16 位是县、区级政府所辖派出所的分配码,每个派出所分配码为 10 个连续号码。第 17 位表示性别,男性为单数,女性为双数,如遇同年同月同日有两人以上时顺延第 2、第 3、第 4、第 5 个分配码;

第 18 位为校验码,根据前面 17 位数字码,按照 ISO 7064:1983.MOD 11-2 校验码计算出来。

通过身份证号码可以查询身份证发证地,出生日期,性别,有效性等信息,身份证 15 位自动转 18 位升位转换。第一代身份证为单页卡式,15 位编码,从 1984 年起开始启用,至 2013 年 1 月 1 日已停用。2004 年 1 月 1 日,第二代居民身份证开始换发 18 位身份证,身份证件正面有签发机关和有效期限,印有国徽图案、证件名称、写意长城图案及彩色花纹;证件背面设计有姓名、性别、民族、出生日期、常住户口所在地住址、公民身份号码和本人相片 7 个登记项目。

四、功能支持

  • 居民身份证
  • 港澳台居住证
  • 外国人永久居留身份证

五、开源协议

本项目基于 MIT[3] ,请自由地享受和参与开源。感谢mumuy[4]。和坚果派的小伙伴做出的努力。

六、运行环境

DevEco Studio NEXT Developer Beta1 Build Version: 5.0.3.401,

适用于 API:12 及以上,在真机 Mate60 测试 ok。

参考资料

[1]

坚果: https://blog.csdn.net/qq_39132095

[2]

如何安装 OpenHarmony ohpm 包: https://gitee.com/openharmony-tpc/docs/blob/master/OpenHarmony_har_usage.md

[3]

MIT: LICENSE

[4]

mumuy: https://github.com/mumuy/idcard

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-06-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大前端之旅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、下载安装
  • 二、使用
  • 三、背景
  • 四、功能支持
  • 五、开源协议
  • 六、运行环境
相关产品与服务
腾讯云服务器利旧
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档