← К заметкам

Заметки

Как считать стаж по дате приёма на работу

Для стажа в полных годах нельзя делить число секунд на 365 * 24 * 60 * 60: високосные годы и ещё не наступившая годовщина дадут ошибки.

В PHP используйте календарную разницу:

$hired_at = new DateTimeImmutable('2020-09-20');
$as_of = new DateTimeImmutable('2026-09-17');

if ($hired_at > $as_of) {
    throw new InvalidArgumentException('Дата приёма позже даты расчёта');
}
echo $hired_at->diff($as_of)->y;

Здесь получится 5: шестая годовщина ещё не наступила. В рабочем коде значения берут из реального поля пользователя и выбранной даты отчёта. В REST профиля дата приёма предусмотрена в UF_EMPLOYMENT_DATE; проверьте, заполнено ли это поле и используется ли оно вашим кадровым учётом.

Отдельно договоритесь, как учитывать перерывы и повторный приём: одна дата не описывает несколько периодов работы. Если стаж хранится вычисленным полем, его нужно обновлять по календарю, а не только при изменении профиля.