Python如何实现日期相减?解决datetime.date与字符串相减报错问题
问题原因
报错是因为字典中存储的生日是字符串类型,无法直接和datetime.date类型的当前日期做减法运算,必须先将字符串格式的生日转换为datetime.date类型后再计算。
解决方法
使用datetime.datetime.strptime()方法按「日-月-年」的格式解析字符串生日,转换为日期对象后再做年龄计算,修改后的完整可运行代码如下:
import datetime import math ministers = [{1: "Alexander", 2: "De Croo", 3: "3-11-1975", 4: "Vilvoorde", 5: "Open Vld"}, {1: "Sophie", 2: "Wilmès", 3: "15-01-1975", 4: "Elsene", 5: "MR"}, {1: "Frank", 2: "Vandenbroucke", 3: "21-10-1955", 4: "Leuven", 5: "sp.a"}, {1: "Petra", 2: "De Sutter", 3: "10-6-1963", 4: "Oudenaarde", 5: "groen"}, {1: "Sammy", 2: "Mahdi", 3: "21-9-1988", 4: "Elsene", 5: "CD&V"}, {1: "Zakia", 2: "Khattabi", 3: "15-1-1976", 4: "Sint-Joost-ten-Node", 5: "Ecolo"}, {1: "Ludivine", 2: "Dedonder", 3: "17-3-1977", 4: "Doornik", 5: "PS"}, {1: "Karine", 2: "Lalieux", 3: "4-5-1964", 4: "Anderlecht", 5: "PS"},] for dictionary in ministers: # 转换字符串生日为date类型 birth_date = datetime.datetime.strptime(dictionary[3], "%d-%m-%Y").date() age = math.floor((datetime.date.today() - birth_date).days / 365.25) if age < 50: print(dictionary[1], dictionary[2], age)
说明
strptime的第二个参数%d-%m-%Y对应你日期的格式:%d匹配两位/一位日期,%m匹配两位/一位月份,%Y匹配四位年份- 转换后调用
.date()是为了和当前日期datetime.date.today()的类型保持一致,避免后续计算出现类型不兼容问题
内容的提问来源于stack exchange,提问作者Barry
相关产品推荐
相关产品推荐

