V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
AifeiI
V2EX  ›  问与答

问:中国护照的有效期是怎么计算的?

  •  
  •   AifeiI · 2019-07-19 09:10:42 +08:00 · 4287 次点击
    这是一个创建于 1715 天前的主题,其中的信息可能已经有所发展或是发生改变。

    护照信息:

    • 出生日期
    • 签发日期
    • 有效期

    有效期根据不同护照类别是有 5 年或 10 年的这两个时长,而从看到过的护照来分析,有效期期限是在签发日期上加上有效时长后减一天,例如:

    时长:10 年
    签发:2019/01/20
    有效:2029/01/19
    

    但是昨天看到一个特别的例子:

    时长:5 年
    签发:2019/02/28
    有效:2024/02/28
    

    出现这个情况后,就在网上搜索公开的资料,但是没有看到相关的信息,有朋友知道这个有效期的期限是如何计算的?

    第 1 条附言  ·  2019-07-19 10:02:50 +08:00

    问题重点是在得知 有效时长签发日期 的前提下,计算出 有效期

    第 2 条附言  ·  2019-07-19 11:28:17 +08:00

    维基百科 - 中华人民共和国护照

    中华人民共和国护照法

    外交部 - 护照旅行证件

    关于护照的信息大多都有说明,唯独有效期的产生规则是没有找到的。我只有这一点没有可靠的资料。

    第 3 条附言  ·  2019-07-19 12:48:18 +08:00

    目前使用的公式:

    有效期 = 起始日期 + (年限 * 365 + (年限 % 4))
    
    第 4 条附言  ·  2019-07-22 17:08:17 +08:00

    之前提供的公式是不完整的,还是更新一下正确的校验思路,以免其他要走这路的同学跳坑里出不来

    公式核心思路是计算出横跨的年份一共有几个闰年,而目前新的验证方式是需要判断这几个闰年中,有多少个是包含2月29日这一天的。

    以原有的例子:

    时长:5 年
    签发:2019/02/28
    有效:2024/02/28
    
    闰年计数 = 签发日期 至 有效期 中年份为闰年的总数
    

    按照签证日期的月日是大于 2月29日 (A)还是小于等于(B),分 A 和 B ,两个区间,且有以下两个条件:

    • 当签证日期的年份是闰年,如果为签证日期在(A),那么第一个闰年是无效的,则需要在计算出的闰年计数中减一
    • 当有效期的年份是闰年,如果为签证日期在(B),那么最后一个闰年是无效的,则需要在计算出的闰年计数中减一
    • 以上思路是假设签证日期完整的时间为: yyyy/MM/dd 00:00:00 ,有效期完整的时间为: yyyy/MM/dd 24:00:00

    Kotlin 代码片段:https://gist.github.com/AifeiI/639e96017f60394e19355e8fa538a3f7

    34 条回复    2019-07-22 17:12:16 +08:00
    netlous
        1
    netlous  
       2019-07-19 09:13:41 +08:00 via iPhone
    无所谓吧,护照少于 6 个月基本就不怎么有用了,研究的这么细难道你想搞事情?😏
    z42514
        2
    z42514  
       2019-07-19 09:13:49 +08:00
    闰年加了一天?
    psychoo
        3
    psychoo  
       2019-07-19 09:15:16 +08:00
    如果能再找到一个有效期在闰年 2 月的例子就清楚了
    ladypxy
        4
    ladypxy  
       2019-07-19 09:16:23 +08:00
    我护照到期日是 2 月 29。。。
    9151
        5
    9151  
       2019-07-19 09:16:48 +08:00
    可能是年龄小就标 5 年?
    psychoo
        6
    psychoo  
       2019-07-19 09:17:07 +08:00
    @ladypxy 签发日是?
    yueqiuge
        7
    yueqiuge  
       2019-07-19 09:17:52 +08:00
    你想干什么
    Sweden
        8
    Sweden  
       2019-07-19 09:21:18 +08:00 via Android
    十六岁以下的时候办护照就是五年
    曾经我的就是这样
    AifeiI
        9
    AifeiI  
    OP
       2019-07-19 09:42:55 +08:00
    是一个旅游签证的系统,需要对护照信息做核验(其实填错自己护照信息的人是不少的.....),然后遇到了这么一个例子,过不了机器核验(最后走了人工核验)。


    @ladypxy #4 你的签发日期是 3 月 1 日?
    abc635073826
        10
    abc635073826  
       2019-07-19 09:58:23 +08:00
    想起了堪比学生证的护照照片将伴随我十年
    rshun
        11
    rshun  
       2019-07-19 09:58:41 +08:00
    应该和身份证一样吧,根据年龄来,年龄越小,有效期越短,年龄越大,有效期越长,我猜测哦
    TimePPT
        12
    TimePPT  
       2019-07-19 10:22:54 +08:00 via iPhone
    和年龄,护照类型,办理护照时的身份证有效期都有关。
    prondtoo
        13
    prondtoo  
       2019-07-19 10:38:55 +08:00
    你问的是什么护照?因私还是因公还是外交护照?
    jfdnet
        14
    jfdnet  
       2019-07-19 11:01:18 +08:00
    洋洋洒洒一大段 竟然不知道楼主想要问什么 我要重新回去学语文了
    AifeiI
        15
    AifeiI  
    OP
       2019-07-19 11:18:31 +08:00
    @TimePPT #12 例如?

    @prondtoo #13 护照类别只决定了有效时长而已,我是想知道生成护照信息的时候,有效期这一项是怎么产生的。
    well666
        16
    well666  
       2019-07-19 11:19:42 +08:00 via iPhone
    @jfdnet 就是有效期有的時候到期那年減一天,有的時候不減吧
    TimePPT
        17
    TimePPT  
       2019-07-19 11:24:40 +08:00
    @AifeiI 没啥例如的啊,自己去翻护照法
    http://www.gov.cn/jrzg/2006-04/29/content_271199.htm
    MonoLogueChi
        18
    MonoLogueChi  
       2019-07-19 11:25:47 +08:00 via Android
    你需要再找一个签发是 2 月非 28 日,有效结束是闰年。一个签发日期是 2 月 28 日,有效结束是非闰年。

    我猜是 1 月 20 日先算到 2029 年的 2 月,然后再减去 1 月没过完的那几天。当结束年份是闰年 2 月的时候,因为有 29 天,所以会比其他情况多一天
    AifeiI
        19
    AifeiI  
    OP
       2019-07-19 11:29:26 +08:00
    @TimePPT #17 请你告诉我,护照发有说明有效期是怎么计算出来的吗?
    AifeiI
        20
    AifeiI  
    OP
       2019-07-19 11:30:50 +08:00
    @MonoLogueChi 这个信息是属于个人隐私,不是谁想要就能找到,所以只能找有没有官方的产生规则说明,可惜我目前没找到。
    mxalbert1996
        21
    mxalbert1996  
       2019-07-19 11:37:00 +08:00 via Android
    10 年=3652 天
    5 年=1826 天
    没什么问题
    loveour
        22
    loveour  
       2019-07-19 11:38:21 +08:00
    这个感觉触及到了知识盲点。不知道有没有人知道的?
    ooxxcc
        23
    ooxxcc  
       2019-07-19 11:39:03 +08:00
    @AifeiI 要求上传护照首页照片做 ocr 不就行了……
    zk8802
        24
    zk8802  
       2019-07-19 11:39:26 +08:00
    从手头能找到的样例出发,可以得到一个可行的公式:N == 5: 签发日期 + 365 * N + 1; N == 10: 签发日期 + 365 * N + 2。

    具体是不是如此就不清楚了。
    zk8802
        25
    zk8802  
       2019-07-19 11:40:10 +08:00
    后面的 +1/+2 是 5 年 /10 年里面因为闰年而增加的天数。
    ooxxcc
        26
    ooxxcc  
       2019-07-19 11:42:13 +08:00
    护照机读码(MRZ)区域使用 OCR-B 字体,OCR 做起来非常容易,然后 MRZ 的格式非常明确,可以从中分割出姓名、证件号、有效期(起止)
    以上部分信息还有校验和

    比让客户挨个填写要简单多了,还不容易出错
    ooxxcc
        27
    ooxxcc  
       2019-07-19 11:43:11 +08:00
    上文 有效期(起止)应当改为 生日+有效期限
    mxalbert1996
        28
    mxalbert1996  
       2019-07-19 11:43:41 +08:00 via Android
    楼上说的没错,再补充一下,以五年为例,因为只多加一天,所以在这五年期间有两个 2 月 29 日的情况下(也是大多数情况)就会看起来是日期减了一天,十年同理。
    AifeiI
        29
    AifeiI  
    OP
       2019-07-19 11:47:53 +08:00
    @ooxxcc OCR 是有清晰度要求,以及不是 100%准确(实际你得到的照片还会以各种姿态出现,所以 OCR 只能应付正常情况)
    ooxxcc
        30
    ooxxcc  
       2019-07-19 11:51:00 +08:00
    @AifeiI 是的,我们做的是证卡识读设备(机场用的那种),所以图片质量比较有保证,OCR 识别率没有问题。你的使用环境让客户上传就比较复杂了。
    ooxxcc
        31
    ooxxcc  
       2019-07-19 11:53:08 +08:00
    @AifeiI
    不过可以考虑一下支付宝上传身份证的过程,通过一定的交互(比如 UI 上面加个框加个头像样式)引导提升用户上传的图片的质量。
    AifeiI
        32
    AifeiI  
    OP
       2019-07-19 12:00:06 +08:00
    @mxalbert1996 按照这个算是正确,目前就是用这个方式去应对,但没有其他资料佐证,比较没把握,所以先问问。
    AifeiI
        33
    AifeiI  
    OP
       2019-07-19 12:45:39 +08:00
    @mxalbert1996
    身份证的计算就好一些,有资料,虽然判定规则稍微比护照多一个步骤。

    @ooxxcc
    客户是上帝(给钱的都是大爷),提供 App 或者其他方式的交互只能作为一种途径,人工提交这一途径还是需要的。
    AifeiI
        34
    AifeiI  
    OP
       2019-07-22 17:12:16 +08:00
    可能有更好的计算方式,希望潜水的 dalao 分享分享😂
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2891 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 13:56 · PVG 21:56 · LAX 06:56 · JFK 09:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.