benj armintia
benj armintia

Reputation: 35

How to convert numbers to dates

the emplyee number is composed of year and month and 3 digit control number how to know the number of years they works if we base on todays date? Employee1 201011003, eployee2 200605015

Upvotes: 0

Views: 1049

Answers (3)

revliscano
revliscano

Reputation: 2272

To get very accurate results, I suggest you to use the dateutil package. It contains a super powerful function called relativedelta that is going to give you the years, months and days that have passed since the day you are interested in, considering leap years (instead of just days, as the datetime.timedelta does).

Also, just as CoryKramer did, we can use the strptime function to parse the date from the employee's codes you have.

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))

Outputs

The employee has been working for 9 years, 6 months and 11 days

Upvotes: 0

GabrielC
GabrielC

Reputation: 320

You can use datetime library like this:

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)

Upvotes: 1

Cory Kramer
Cory Kramer

Reputation: 117896

You can use datetime.strptime to read the date string into a datetime object. By subtracting two datetime objects you'll get back a timedelta object, which you can use to compute the years the employee has been there.

from datetime import datetime
def get_date(s):
    return datetime.strptime(s[:6], '%Y%m')

Examples

>>> get_date('201011003')
datetime.datetime(2010, 11, 1, 0, 0)
>>> get_date('200605015')
datetime.datetime(2006, 5, 1, 0, 0)

Depending on the precision you want, you can approximate the number of years the employee has been there like

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

Upvotes: 1

Related Questions