Geçen yıl sayısı - artıkyıl düşünün

2 Cevap php

İK sisteminde, biz çalışan şirket hizmet etmiştir yılların sayısını hesaplamak istiyorum.

Ne var TIMESTAMP sütununda katılmadan tarihtir.

Ben ne yapıyorum olduğunu:

$timeNow = time(); // current time
$joinDate = strtotime($users->fields['date_of_joining']); // from database
$servicePeriod = $timeNow - $joinDate; // in seconds
$servicePeriod = $servicePeriod / 31570560; // in years

Ama bu dikkate artık yıl sürer? Bir çalışanın değil Feb 27, artık bir yıl ve biz önümüzdeki yıl durumunu kontrol ederseniz 1 year için hizmet olarak March 1, hala rapor edilmelidir ve katıldı eğer 1 year and 1 day.

Bu konuda herhangi bir fikir? Teşekkürler.

2 Cevap

Sizin yöntem bu hesaplamak için gereksiz dolambaçlı bir yol gibi görünüyor. Nasıl bu konuda (pseudocode):

years = current_date.year - start_date.year
if current_date.mmdd < start_date.mmdd:
    years = years - 1

Belli ki yanlış bir yılda 365.4 gün ile saydım. Eğer 365,26 (31558464) bu değiştirirseniz, artık yıl otomatik olarak uzun vadede dahil edilecek, ancak süresi 4 yıldan kısa değilse. Bu, kendi avantajı olduğunu, ancak çalışanlarınız '.

Ayrıca, tamamlanan gün sayısını aşağı yuvarlamak için bir son satırı ekleyin:

$servicePeriod = floor($servicePeriod);