1. import datetime
  2.  
  3. def calculate_age(birth_s=''):
  4. birth_d = datetime.datetime.strptime(birth_s, "%Y%m%d")
  5. today_d = datetime.datetime.now()
  6. birth_t = birth_d.replace(year=today_d.year)
  7. if today_d > birth_t:
  8. age = today_d.year - birth_d.year
  9. else:
  10. age = today_d.year - birth_d.year - 1
  11.  
  12. print('出生日期:%s' % birth_d)
  13. print('今年生日:%s' % birth_t)
  14. print('今天日期:%s' % today_d)
  15. print('如果今天日期大于今年生日,今年-出生年=年龄')
  16. print('如果今天日期不大于今年生日,今年-出生年-1=年龄')
  17. print('年龄:%s' % age)
  18. return age
  19.  
  20. if __name__ == '__main__':
  21. print(calculate_age(''))

放入sqlalchemy模型定义中,id_Num是身份证号,其中6-14位是出生日期。

  1. @property
  2. def age(self):
  3. if len(self.id_Num) > 14:
  4. birth_s = self.id_Num[6:14]
  5. birth_d = datetime.datetime.strptime(birth_s, "%Y%m%d")
  6. today_d = datetime.datetime.now()
  7. birth_t = birth_d.replace(year=today_d.year)
  8. if today_d > birth_t:
  9. age = today_d.year - birth_d.year
  10. else:
  11. age = today_d.year - birth_d.year - 1
  12. else:
  13. age = 0
  14. return age

引申一下,有身份证以后,性别也可以计算出来

  1. @property
  2. def gender(self):
  3. if len(self.IdNum) > 17:
  4. tag = self.IdNum[16:17]
  5. if (int(tag) % 2) == 0:
  6. result = '女'
  7. else:
  8. result = '男'
  9. else:
  10. result = '未知'
  11. return result

加一个excel算性别

=IF(MOD(MID(D4,17,1),2),"男","女")

python 根据生日计算年龄 sqlalchemy根据身份证号计算生日 性别的更多相关文章

  1. js中如何通过身份证号计算出生日期和年龄

    在html中有如下标签 身份证号:<input type="text" id="Gra_IDCard" onChange="IDCardChan ...

  2. sql server 根据身份证号计算出生日期和年龄的存储过程

    我这边有一个业务,需要客户填写身份证号,自动计算他的出生日期和年龄 在sql中,具体的存储过程实现是这样的: /******************************************** ...

  3. 教你一招:根据身份证号计算出生年月和年龄 text函数和mid函数混用 datedif函数和today函数混用

    在电子表格Excel中,使用text函数和mid函数混用,根据身份证号计算出生年月: =text(mid(A2,,),"0!/00!/00") #0!/00!/00 为日期的格式# ...

  4. SQL语句通过身份证号计算年龄

    SQL语句通过身份证号计算年龄 1.截取身份证号上的出生日期 身份证一般为18位数和15位数 18位数身份证的第7-10位数是出生年份,第11-14位数是出生月日,所以18位身份证的年龄计算如下 su ...

  5. oracle 根据身份证号计算出生日期

      1.情景展示 如何根据身份证号推算出出生日期? 2.解决方案 --根据身份证号计算出生日期 SELECT DECODE(LENGTH(ID_CARD), 18, SUBSTR(ID_CARD, 7 ...

  6. 从身份证号提取生日并更新到生日字段中的SQL语句

    1:根据身份证号 更新 生日字段 SQL update 学生信息 ,)+,)+,) 2:根据身份证号 更新 性别字段 SQL update 学生信息 set 性别='男' and substring( ...

  7. sqlalchemy 模型中添加根据身份证号计算性别和年龄

    class Users(Base, BaseMixin): username = Column(String(24)) id_Num = Column(String(18) ) # 身份证号码 @pr ...

  8. EXCEL计算根据当前时间和身份证号计算准确年龄

    假设身份证号在A2单元格 =IF(MONTH(NOW())<MONTH(DATE(MID(A2,7,4),MID(A2,11,2),MID(A2,13,2))),INT(YEAR(NOW())- ...

  9. JS通过身份证号获取生日、年龄、性别

    <script> function IdCard(UUserCard,num){ if(num==1){ //获取出生日期 birth=UUserCard.substring(6, 10) ...

随机推荐

  1. selenium-1-python

    python selenium from selenium import webdriver from selenium.webdriver.common.action_chains import A ...

  2. vue router 中,children 中 path 为空字符串的路由,是默认打开的路由(包括在 el-tabs 中嵌套路由的情况)

    详见该页面的最后一个代码块:https://router.vuejs.org/zh/guide/essentials/nested-routes.html#%E5%B5%8C%E5%A5%97%E8% ...

  3. python--io多路复用之select实现

    1.I/O多路复用指:通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作. 2.I/O多路复用避免阻塞在io上,原本为多进程或多线程来接收多 ...

  4. linux查看大文件

    du -h --max-depth=1

  5. 2.Servlet入门

    一.Servlet简介 Servlet为sun公司开发动态web的一门技术 Sun公司在这些API中提供了一个接口叫做:Servlet,如果想开发Servlet程序,需要完成两个小步骤: 编写一个类, ...

  6. 全部文章> Maven

    Maven     原 Maven中<resources>标签详解 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;& ...

  7. A1113 | Integer Set Partition (25)

    太简单了 #include <stdio.h> #include <memory.h> #include <math.h> #include <string& ...

  8. python爬虫出现ProxyError: HTTPSConnectionPool错误

    在今天刚刚打开pycharm运行爬虫时,发现所有的爬虫都不能运行,会出现如下的错误: 错误出现的主要原因是;代理错误(其实自己根本没有设置代理) 解决方法: 在网上查阅了许多类似的错误解决方法,试过后 ...

  9. 如何使用Processing获取图片中每一个像素的坐标

    剛好碰到有同學問如何在Processing中進行像素級的圖片處理, =============================================================此時需要一 ...

  10. markdown转html

    今天临时要写接口文档,然后发现部门给的文档是markdown文件的,而接口文档是要html格式的,因此想直接把markdown转为html 这里我使用的是marked 首先初始化一个node项目 np ...