如何将数字转换为日期
How to convert numbers to dates
员工编号由年月和3位控制号组成,如果我们以今天的日期为准,如何知道他们工作的年数?员工1 201011003,员工2 200605015
您可以使用 datetime.strptime
将日期字符串读入 datetime
对象。通过减去两个 datetime
对象,你会得到一个 timedelta
对象,你可以用它来计算员工在那里的年数。
from datetime import datetime
def get_date(s):
return datetime.strptime(s[:6], '%Y%m')
例子
>>> get_date('201011003')
datetime.datetime(2010, 11, 1, 0, 0)
>>> get_date('200605015')
datetime.datetime(2006, 5, 1, 0, 0)
根据您想要的精确度,您可以估算该员工在那里工作的年数,例如
def get_years(s):
start = datetime.strptime(s[:6], '%Y%m')
now = datetime.now()
return (now - start).days / 365.25
>>> get_years('201011003')
9.527720739219713
>>> get_years('200605015')
14.03148528405202
您可以像这样使用日期时间库:
from datetime import date
date_str = '201011003'
year = int(date_str[0:4])
month = int(date_str[4:6])
d = date(year, month, 1)
year_delta = (date.today() - d).days // 365
print(year_delta)
要获得非常准确的结果,我建议您使用 dateutil package。它包含一个名为 relativedelta
的超级强大功能,它将为您提供从您感兴趣的那一天起经过的年、月和日,考虑闰年(而不只是天数,因为 datetime.timedelta
)。
此外,正如所做的那样,我们可以使用strptime
函数从您拥有的员工代码中解析日期。
import datetime as dt
from dateutil.relativedelta import relativedelta
employee = '201011003'
date_joined = dt.datetime.strptime(employee[:6], '%Y%m')
result = relativedelta(dt.datetime.today(), date_joined)
print('The employee has been working for {} years, {} months and {} days'.format(
result.years, result.months, result.days))
输出
The employee has been working for 9 years, 6 months and 11 days
员工编号由年月和3位控制号组成,如果我们以今天的日期为准,如何知道他们工作的年数?员工1 201011003,员工2 200605015
您可以使用 datetime.strptime
将日期字符串读入 datetime
对象。通过减去两个 datetime
对象,你会得到一个 timedelta
对象,你可以用它来计算员工在那里的年数。
from datetime import datetime
def get_date(s):
return datetime.strptime(s[:6], '%Y%m')
例子
>>> get_date('201011003')
datetime.datetime(2010, 11, 1, 0, 0)
>>> get_date('200605015')
datetime.datetime(2006, 5, 1, 0, 0)
根据您想要的精确度,您可以估算该员工在那里工作的年数,例如
def get_years(s):
start = datetime.strptime(s[:6], '%Y%m')
now = datetime.now()
return (now - start).days / 365.25
>>> get_years('201011003')
9.527720739219713
>>> get_years('200605015')
14.03148528405202
您可以像这样使用日期时间库:
from datetime import date
date_str = '201011003'
year = int(date_str[0:4])
month = int(date_str[4:6])
d = date(year, month, 1)
year_delta = (date.today() - d).days // 365
print(year_delta)
要获得非常准确的结果,我建议您使用 dateutil package。它包含一个名为 relativedelta
的超级强大功能,它将为您提供从您感兴趣的那一天起经过的年、月和日,考虑闰年(而不只是天数,因为 datetime.timedelta
)。
此外,正如strptime
函数从您拥有的员工代码中解析日期。
import datetime as dt
from dateutil.relativedelta import relativedelta
employee = '201011003'
date_joined = dt.datetime.strptime(employee[:6], '%Y%m')
result = relativedelta(dt.datetime.today(), date_joined)
print('The employee has been working for {} years, {} months and {} days'.format(
result.years, result.months, result.days))
输出
The employee has been working for 9 years, 6 months and 11 days