通过的年数 - 考虑闰年

时间:2010-01-05 06:16:47

标签: php timestamp

在我们的人力资源系统中,我们希望计算员工为公司服务的年数。

我们所拥有的是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

有关于此的任何想法吗?感谢。

2 个答案:

答案 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);