Вычислить количество лет, месяцев и дней между двумя датами

Автор Natali, 18 февраля 2011, 11:30

0 Пользователи и 1 гость просматривают эту тему.

Natali

   У меня такой вопрос:
В отделе кадров нужно точно определить сколько лет, месяцев и дней человек проработал на предприятии, зная дату начала и окончания работы. При вычислении учитывать, что год может быть високосным,  учитывать точное количество дней конкретного месяца в году.
    В Excel  я использую формулу :

=РАЗНДАТ(A1;A2;"y")&"г."&РАЗНДАТ(A1;A2;"ym")&"мес."&РАЗНДАТ(A1;A2;"md")&"дн." ---смотрите вложенный файл.
   Как реализовать эту возможность в OpenOffice 3.3 ?
Спасибо.
Наталья Н.

[вложение удалено Администратором]

Natali


convas

#2
В OpenOffice сложнее.

Извиняюсь за предыдущее сообщение, в OpenOffice еще сложнее!!!

В этом варианте не учтен случай, когда месяцы начальной и конечной даты совпадают, а конечный день может быть и больше и меньше начального.

Нужна доработка!

[вложение удалено Администратором]

VlhOwn

Natali,
ответьте, пожалуйста, на следующие вопросы:
0. Дата увольнения - это последний день работы или первый день свободы от нее?
1. Какой результат Вы хотите увидеть при поступлении на работу 01.01.2000 и увольнении 31.12.2001?
2. Какой результат Вы хотите увидеть при поступлении на работу 01.02.2000 и увольнении 30.11.2001?

convas

#4
Ну, вот теперь вроде правильно и совпадает с РАЗНДАТ() Excel'я.

Цитировать=YEARS(A1;A2;0)&" г. "&MONTHS(A1;A2;0)-YEARS(A1;A2;0)*12&" мес. "& IF(DAY(A1)<=DAY(A2) ; DAYS(A2;DATE(YEAR(A2);MONTH(A2);DAY(A1))) ; DAYS(A2;DATE(YEAR(A2);MONTH(A2)-1;DAY(A1)))) &" дн."

[вложение удалено Администратором]

convas

Сравнение Calc и Excel.

[вложение удалено Администратором]

VlhOwn

Convas, увольнение в 2001 году.

P.S. Картинки, конечно, весьма наглядное средство, но вот только формулу из картинки выцепить - занятие еще более муторное, чем переписывать ее вручную.

convas

ЦитироватьИнструкция по заполнению трудовых книжек. 5. Заполнение сведений об увольнении (прекращении трудового договора)
5.1. Запись об увольнении (прекращении трудового договора) в трудовой книжке работника производится в следующем порядке: в графе 1 ставится порядковый номер записи; в графе 2 указывается дата увольнения (прекращения трудового договора); в графе 3 делается запись о причине увольнения (прекращения трудового договора); в графе 4 указывается наименование документа, на основании которого внесена запись - приказ (распоряжение) или иное решение работодателя, его дата и номер.
Датой увольнения (прекращения трудового договора) считается последний день работы, если иное не установлено федеральным законом, трудовым договором или соглашением между работодателем и работником.
Например, при прекращении трудового договора с работником в связи с сокращением штата работников 10 октября 2003 г. определено последним днем его работы. В трудовой книжке работника должна быть произведена следующая запись: в графе 1 раздела "Сведения о работе" ставится порядковый номер записи, в графе 2 указывается дата увольнения (10.10.2003), в графе 3 делается запись: "Уволен по сокращению штата работников организации, пункт 2 статьи 81 Трудового кодекса Российской Федерации", в графе 4 указывается дата и номер приказа (распоряжения) или иного решения работодателя об увольнении.

Но вопрос стоял об аналоге функции РАЗНДАТ, а это разные вещи.
Работник принят 01.01.2000, уволен 10.01.2000.
Разность этих дат (РАЗНДАТ) = 9 дней ( 01.01.2000 + 9 дней = 10.01.2000).
А работал работник 10 дней (10.01.2000 входит в срок работы).

Формулу я уже приводил отдельно от картинок.
=YEARS(A1;A2;0)&" г. "&MONTHS(A1;A2;0)-YEARS(A1;A2;0)*12&" мес. "& IF(DAY(A1)<=DAY(A2) ; DAYS(A2;DATE(YEAR(A2);MONTH(A2);DAY(A1))) ; DAYS(A2;DATE(YEAR(A2);MONTH(A2)-1;DAY(A1)))) &" дн."



convas

#8
Чтобы окончательно стало всем все ясно.
При расчете срока работы с помощью функции РАЗНДАТ в качестве начальной даты берется дата приема на на работу, а в качестве конечной - дата, следующая за днем увольнения.

Дата приема 01.10.2000
Дата увольнения 23.08.2010

Срок работы = РАЗНДАТ(01.10.2000;24.08.2010;...)


Natali

VlhOwn, Дата увольнения - это последний день работы
Сейчас я обратила внимание: если работник принят 01.01.2000,а  уволен 10.01.2000. то стаж по правилам --10 дней.
А у меня функция РАЗНДАТ считает, что 9 дней.


Natali

convas,  Вы совершено правы.
Так и выходит, что в качестве конечной даты- надо брать  дату, следующую за днем увольнения.
Буду в понедельник с кадровиком смотреть все варианты с датами.
Спасибо за формулу для OpenOffice.

veterock

Здравствуйте, столкнулась с такой проблемой на работе: необходимо вычислять возраст людей на текущую дату времени. В exele все получалось с помощью такой формулы "=РАЗНДАТ(E1;F1;"y")", где E1- дата рождения человека в формате дд.мм.гггг, а F1 - функция =СЕГОДНЯ(). В конечной ячейке у меня получался т.н. "автовозраст", что очень помогало в работе. С недавнего времени вместо exele - openoffice calc. и ничего не выходит(((

rami

Формула: =DATEDIF(E1;F1;"y") , если последняя дата "Сегодня" , можно написать: =DATEDIF(E1;TODAY();"y")

Yakov

Проверил в Apache OpenOffice 4.1.1 - DATEDIF не работает, а вот в LibreOffice 4.3 такая функция имеется

Yakov

В вашем случае можно заменить другой формулой
=YEARS(E1;F1;0)