在我们的人力资源系统中,我们希望计算员工为公司服务的年数。
我们所拥有的是TIMESTAMP
列中的加入日期。
我在做的是:
$timeNow = time(); // current time
$joinDate = strtotime($users->fields['date_of_joining']); // from database
$servicePeriod = $timeNow - $joinDate; // in seconds
$servicePeriod = $servicePeriod / 31570560; // in years
但是这会考虑闰年吗?如果员工在闰年Feb 27
加入,并且我们明年按March 1
查看状态,则仍应将其报告为1 year
而不是1 year and 1 day
。
有关于此的任何想法吗?感谢。
答案 0 :(得分:7)
你的方法似乎是一种不必要的迂回方式来计算它。这个怎么样(伪代码):
years = current_date.year - start_date.year
if current_date.mmdd < start_date.mmdd:
years = years - 1
答案 1 :(得分:0)
您计算一年365.4天这显然是错误的。如果将其更改为365.26(31558464),则从长远来看将自动包含闰年,但如果时间短于4年则不会。这是你自己的优势,但不是你的员工。
另外,添加最后一行以将数字向下舍入到完成的日期:
$servicePeriod = floor($servicePeriod);