我從存盤在串列中的資料庫中提取了一系列日期。像這樣:
query_age = db.select([customer.columns.dob])
proxy_age = connection.execute(query_age)
result_age = proxy_age.fetchall()
date = []
for row in result_age:
date.append(' '.join(row))
它歸結為如下所示: ['2002-11-03', '1993-08-25', '1998-01-30']
我嘗試了以下方法,但結果非常非 Pythonic:
ages = []
years = []
for row in y:
ages.append(''.join(row))
for i in ages:
years.append(int(i[:4]))
years_age = [int(x) for x in years]
print(years_age)
我想通過這個我可以將給定的字串轉換為整數并從 2021 中減去,但對我來說它看起來很丑。
我試圖將串列中的專案傳遞給一個名為“年齡”的函式,該函式將確定特定日期和現在之間經過的時間(以年為單位)。我試過 datetime.strptime() 但無法弄清楚。我是一個非常新的程式員。任何幫助,將不勝感激。
uj5u.com熱心網友回復:
使用這篇文章中的資訊,您可以創建一個如下所示的函式 age。請注意,這fmt只是日期字串的格式
import datetime
from dateutil.relativedelta import relativedelta
def age(dob, fmt = '%Y-%m-%d'):
today = datetime.datetime.now()
birthdate = datetime.datetime.strptime(dob, fmt)
difference_in_years = relativedelta(today, birthdate).years
return(difference_in_years)
然后,使用您上面帖子中的資訊:
DOB = ['2002-11-03', '1993-08-25', '1998-01-30']
for d in DOB:
print("DOB:%s --> Age: %i" % (d, age(d)))
# DOB:2002-11-03 --> Age: 18
# DOB:1993-08-25 --> Age: 28
# DOB:1998-01-30 --> Age: 23
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/313669.html
