9.2. Функции Дата и время

Категория: 9. Функции в LibreOffice.Calc
Опубликовано 27.08.2011 12:30
Автор: Шитов В.Н.
Просмотров: 11157

Введение

По датам необходимо сделать несколько замечаний. По умолчанию даты отсчитываются с 30.12.1899 года. Это общепризнанный отсчет дат практически во всех аналогичных программах и изменять отсчет дат крайне не желательно. Если год указывается не в виде 4-значного года, а виде 2-значного, как это делают большинство людей, то программа автоматически добавляет к указанному году две цифры следующим образом: если года указываются от 30 до 99 (от 1930 до 1999 гг.), то к году добавляется 19. Если первые 2 цифры начинаются от 0 (или от 00) до 29, то к году добавляется 20 (от 2000 до 2029 гг.). Если это не так, и Вы хотите изменить эти значения присваивания двух первых цифр к 2-значному году, то выполните команду СервисПараметры. В открывшемся после этого окне откройте раздел LibreOffice.org → Общие. В счетчике Интерпретировать как года между измените существующие значения по умолчанию.

Если дата имеет целое значение, то речь идет именно о дате и ни о чем другом. Например, дата 18.06.2008 года имеет значение 39 617.

Если дата имеет дробную часть, то речь идет не только о дате, но и о времени. Например, значение 39 617,4 означает дату 18.06.2008 и время 09:36:00 в этой дате. Если Вы не понимаете, почему число вдруг превратилось в дату, то нажмите на кнопку Числовой формат (стандарт) на инструментальной панели Форматирование (). Если вместо даты выводится какое-то число, то выполните команду ФорматЯчейки, в открывшемся диалоговом окне Формат ячеек перейдите на вкладку Числа и выберите категорию Дата. Выберите нужный формат даты. Нажмите на кнопку ОК.

В качестве разделителя внутри даты желательно использовать точку (01.01.2011, 01.11, 01.2011), а не другие символы (01-01-2011, 01/01/2011), так как другие символы могут ошибочно трактоваться программой как символы математических операций.

В качестве разделителя времени используется двоеточие (20:15:49 или 20:15). Если секунды не указываются, то программа считает их нулями.

Если Вы не хотите трактовать дату или время как числовые значения, то есть не собираетесь использовать их в формулах, то можете заключить их в кавычки («01.01.2011», «20:41:16»).

DATE

Данная функция возвращает дату в числовом формате для заданной даты. Ее синтаксис следующий:

=DATE (год; месяц; день)

Где год — это число от 1583 до 9956 или от 0 до 99; месяц — это число, представляющее номер месяца в году. Если месяц больше 12, то это число прибавляется к первому месяцу указанного года; день — это число, представляющее номер дня в месяце. Если день больше числа дней в указанном месяце, то это число прибавляется к первому дню указанного месяца.

Отформатируйте ячейки в виде числового формата. Рассчитаем номер дня для 25 июня 2009 года:

=DATE (2009; 6; 25)

Ответ 39989.

Если месяц или день указаны в виде 0, то берется предыдущий месяц или число. Например, если задать аргументы в формуле:

=DATE (2009; 0; 25)

то ответ будет 25 декабря 2008 года (предыдущим месяцем является последний месяц прошлого года).

Если задать формулу с нулями месяца и дня:

=DATE (2009; 0; 0)

то ответ на первый взгляд будет странным: 30 ноября 2008 года. Хотя если проанализировать правила выдачи даты, то понимаешь, что LibreOffice.org Calc считает совершенно точно.

В Microsoft Excel аналог этой функции называется ДАТА.

DATEVALUE

Функция DATEVALUE возвращает числовой формат даты, представленной в виде текста. Функция DATEVALUE используется для преобразования даты из текстового представления в числовой формат. Синтаксис этой функции следующий:

=DATEVALUE (дата_как_текст)

Где дата_как_текст — любая дата между 1583 до 9956 или от 0 до 99 годами в любом разрешенном формате, указываемая в кавычках. Информация о дате в аргументе время_как_текст игнорируется.

Если в аргументе дата_как_текст опущен год, то DATEVALUE использует текущий год из встроенных часов компьютера. Информация о времени в аргументе дата_как_текст игнорируется.

Например:

=DATEVALUE ("01.07.2009")

будет возвращено 39995.

В Microsoft Excel аналог этой функции называется ДАТАЗНАЧ.

DAYS

Данная функция рассчитывает разность между двумя значениями дат. Результатом является число дней между двумя датами. Функция имеет следующий синтаксис:

=DAYS(дата_2; дата_1)

Где дата_1 — начальная дата, дата_2 — конечная дата. Если дата_2 более ранняя, чем дата_1, то результатом будет отрицательное число.

Примеры:

=DAYS("25.08.2009"; NOW())

возвращает 432 число дней с текущей даты по 25 августа 2009 г.

=DAYS("01.01.2001";"01.01.2000")

возвращает 366.

В Microsoft Excel аналога этой функции нет.

DAYS360

Функция DAYS360 возвращает количество дней между двумя датами на основе 360-дневного искусственного года (двенадцать 30-дневных месяцев). Синтаксис этой функции следующий:

=DAYS360 (нач_дата; кон_дата; метод)

Где нач_дата и кон_дата — это две даты, для которых требуется узнать количество дней между ними. Аргументы могут быть либо текстовыми строками, использующими числа для задания месяца, дня и года (например, "31.12.04" или "1-1-04"), либо датами в числовом формате. При составлении формулы следует помнить, что если нач_дата превосходит кон_дата, то DAYS360 возвращает отрицательное число; метод — это логическое значение, которое определяет, какой метод, Европейский или Американский, должен использоваться при вычислениях:

Метод

Определение

FALSE или опущено (или 0)

Американский метод (NASD). Если начальная дата является 31-м числом месяца, то она полагается равной 30-ому числу того же месяца. Если конечная дата является 31-м числом месяца и начальная дата меньше, чем 30-ое число, то конечная дата полагается равной 1-ому числу следующего месяца, в противном случае конечная дата полагается равной 30-ому числу того же месяца.

TRUE или 1

Европейский метод. Начальная и конечная даты, которые приходятся на 31-ое число месяца, полагаются равными 30-ому числу того же месяца.

Укажите в ячейке A1 дату 30.07.09. В ячейке A2 укажите дату 01.08.09. Тип будет 1, то есть Европейский.

Например, вычислим разницу между двумя датами:

=DAYS360 (A1;A2;1)

Несмотря на то, что фактически в июле 31 день, функция возвратит значение 1 день.

В Microsoft Excel аналог этой функции называется ДНЕЙ360.

EASTERSUNDAY

Возвращает дату католической пасхи для указанного года. Год представляет собой целое число в диапазоне от 1583 до 9956 или от 0 до 99. Другие праздничные даты можно вычислить, просто прибавив нужное число дней к этой дате. Функция не имеет аргументов:

=EASTERSUNDAY(Год)

Где Год — год, для которого выполняется расчет

Понедельник после Пасхи = EASTERSUNDAY(Год) + 1

Страстная пятница = EASTERSUNDAY(Год) – 2

Троицын день = EASTERSUNDAY(Год) + 49

Понедельник после Троицы = EASTERSUNDAY(Год) +50

Примеры

=EASTERSUNDAY(2008)

возвращает дату 23.03.08.

=EASTERSUNDAY(2009)+49

возвращает число 39964. При использовании формата дат ДД.ММ.ГГ результат представлен в виде 31.05.09.

В Microsoft Excel аналога этой функции нет.

EDATE

Функция EDATE возвращает дату в числовом формате, отстоящую на заданное количество месяцев вперед или назад от нач_дата. Эта функция имеет следующий синтаксис:

=EDATE (нач_дата; число_месяцев)

Где нач_дата — это дата в числовом формате, соответствующая начальной дате; число_месяцев — это количество месяцев до или после даты нач_дата. Положительное значение аргумента число_месяцев означает будущие даты; отрицательное значение означает прошедшие даты.

Например, составим формулы:

=EDATE ("01.07.04"; 4)
=EDATE ("01.07.04"; -4)

Ответом будут значения 38292 (01.11.2004) и 38047 (01.03.2004) соответственно.

В Microsoft Excel аналог этой функции называется ДАТАМЕС.

EOMONTH

Функция EOMONTH возвращает числовой формат последнего дня месяца, отстоящего на указанное количество месяцев от даты нач_дата. Эти функции имеют следующий синтаксис:

=EOMONTH (нач_дата; число_месяцев)

Где нач_дата — это дата в числовом формате, соответствующая начальной дате; число_месяцев — это количество месяцев до или после даты нач_дата. Положительное значение аргумента число_месяцев означает будущие даты; отрицательное значение означает прошедшие даты.

Например, составим формулы:

=EOMONTH ("01.07.04"; 4)
=EOMONTH ("01.07.04"; -4)

Ответом будут значения 38321 и 38077 соответственно.

В Microsoft Excel аналог этой функции называется КОНМЕСЯЦА.

HOUR, MINUTE, SECOND

Функции HOUR, MINUTE, SECOND возвращают час, минуты и секунды соответствующие заданной дате в числовом формате. Час определяется как целое в интервале от 0 (12:00 AM) до 23 (11:00 PM).

Синтаксис этих функций следующий:

=HOUR (дата_в_числовом_формате)
=MINUTE (дата_в_числовом_формате)
=SECOND (дата_в_числовом_формате)

Где дата_в_числовом_формате — это код дата-время, используемый в LibreOffice.org Calc для вычислений с датами и периодами времени. Можно задать аргумент дата_в_числовом_формате как текст, например "16:48:00" или "4:48:00 PM", а не как число. Текст автоматически преобразуется в дату в числовом формате.

При задании ошибочного имени MINUTE или SECOND выдается сообщение об ошибке. Для числового значения времени 0,608159722222 функции HOUR, MINUTE, SECOND:

=HOUR (0,608159722222)
=MINUTE (0,608159722222)
=SECOND (0,608159722222)

вернут 14 часов 35 минут 45 секунд

Для номера дня 38163,35678 функции HOUR, MINUTE, СЕКУНДЫ:

=HOUR (38163,35678)
=MINUTE (38163,35678)
=SECOND (38163,35678)

вернут 8 часов 33 минуты 46 секунд.

То есть все равно, в каком виде задается аргумент — как номер дня или числовое значение времени — функции все равно считают часы, минуты и секунды.

В Microsoft Excel аналоги этих функций называются ЧАС, МИНУТЫ, СЕКУНДЫ.

NETWORKDAYS

Функция NETWORKDAYS возвращает количество рабочих дней между нач_дата и кон_дата. Рабочими днями считаются дни за исключением выходных и праздничных дней. Функция NETWORKDAYS для вычисления оплаты работника на основе количества дней, отработанных в указанный период. Эти функции имеют следующий синтаксис:

=NETWORKDAYS (нач_дата; кон_дата; праздники)

Где нач_дата — это начальная дата в числовом формате; кон_дата — это дата в числовом формате, которая представляет конечную дату; количество_дней — это количество не выходных и не праздничных дней до или после нач_дата, положительное значение аргумента количество_дней означает будущую дату, а отрицательное значение — означает прошедшую дату; праздники — это необязательный массив из одной или нескольких дат в числовом формате, которые требуется исключить из рабочего календаря, например государственные праздники. В ячейке A1 укажите 01.01.09. В ячейке A2 укажите 31.12.09. Для составления праздников заполним ячейки, где в столбце А (ячейки с А3 по А19) будут наименования праздников, а в столбце В (ячейки с В3 по В19) даты праздников:

Новый год

01.01.09

Продолжение Нового года

02.01.09

Продолжение Нового года

03.01.09

Продолжение Нового года

04.01.09

Новый год продолжается

05.01.09

Продолжаем встречать Новый год

06.01.09

Рождество Христово

07.01.09

Продолжение Нового года

08.01.09

Продолжение Нового года

09.01.09

Продолжение Нового года

10.01.09

День Защитника Родины

23.02.09

Международный Женский день

08.03.09

Международный день солидарности

01.05.09

Продолжение Дня солидарности

02.05.09

День Великой Победы

09.05.09

День России

12.06.09

День освобождения Кремля

04.11.09

Например, составим формулу:

=NETWORKDAYS (A1;A2; B3:B19)

возвратит число рабочих дней: 250.

В Microsoft Excel аналог этой функции называется ЧИСТРАБДНИ.

NOW

Функция NOW возвращает текущую дату и время в числовом формате. Ее синтаксис следующий:

=NOW ()

Функция NOW аргументов не имеет, так как берет аргументы из системной даты.

В Microsoft Excel аналог этой функции называется ТДАТА.

TIME

Функция TIME возвращает дату в числовом формате для заданного времени. Дата в числовом формате, возвращаемая функцией TIME — это десятичная дробь в интервале от 0 до 0,99999999, представляющая время от 0:00:00 (12:00:00 ночи) до 23:59:59 (11:59:59 вечера). Синтаксис этой функции следующий:

=TIME (часы; минуты; секунды)

Где часы — это целое число от 0 до 23, представляющее час; минуты — это целое число от 0 до 59, представляющее минуту; секунды — это целое число от 0 до 59, представляющее секунду.

Например:

=TIME (16; 35; 00)

Если ввод секунд не предусмотрен, то их можно не указывать, но в этом случае точка с запятой после минут обязательна:

=TIME (16; 35;)

В Microsoft Excel аналог этой функции называется ВРЕМЯ.

TIMEVALUE

Функция TIMEVALUE возвращает числовой формат для времени, представленного аргументом время_как_текст. Время в числовом формате — это десятичная дробь в интервале от 0 до 0,99999999, представляющая время от 0:00:00 (12:00:00 ночи) до 23:59:59 (11:59:59 вечера). Функция TIMEVALUE используется для преобразования времени, представленного в виде текста, в числовой формат времени. Синтаксис этой функции следующий:

=TIMEVALUE (время_как_текст)

Где время_как_текст — это текстовая строка, содержащая время в любом допустимом формате.

Например:

=TIMEVALUE ("15:45")

будет возвращено 0,65625.

В Microsoft Excel аналог этой функции называется ВРЕМЗНАЧ.

TODAY

Возвращает текущую дату в числовом формате. Числовой формат даты — это код дата-время, используемый в LibreOffice.org Calc для вычислений с датами и периодами времени. Синтаксис этой функции имеет вид:

=TODAY ()

Аргументов функция не имеет. Аргументы для определения текущей даты функция берет из системной даты. В Microsoft Excel аналог этой функции называется СЕГОДНЯ().

WEEKDAY

Данная функция возвращает день недели для данного значения даты. Значение возвращается в виде целого числа от 1 (воскресенье) до 7 (суббота), если тип не указан или определен тип = 1. Если определен тип =2, отсчет начинается с понедельника=1; а если тип =3, отсчет начинается с понедельника=0).

Данная функция имеет следующий синтаксис:

=WEEKDAY(число; тип)

Аргумент число в качестве значения даты является десятичным представлением, для которого должен быть возвращен номер дня недели. Аргумент тип определяет тип вычислений. Если тип =1, отсчет дней недели начинается с воскресенья (этот отсчет используется по умолчанию, даже если аргумент "тип" опущен). Если тип =2, отсчет дней недели начинается с понедельника и 1 (понедельник = 1); а если тип =3, отсчет начинается с понедельника и с 0 (понедельник = 0). Эти значения применяются только к стандартному формату даты, который выбирается на странице Сервис → Параметры → LibreOffice.org Calc → Вычисления.

Примеры:

Команда WEEKDAY("14.6.2000") возвращает 4 (аргумент "тип" опущен, поэтому используется стандартный отсчет. Стандартный отсчет начинается с воскресенья — это день номер 1. 14 июня 2000 года была среда, то есть день номер 4).

Команда WEEKDAY("24.7.1996";2) возвращает 3 (аргумент тип = 2, следовательно, день номер 1 — понедельник. 24 июля 1996 была среда, то есть день номер 3).

Команда WEEKDAY("24.7.1996";1) возвращает 4 (аргумент тип = 1, следовательно, день номер 1 — воскресенье. 24 июля 1996 была среда, то есть день номер 4).

Команда WEEKDAY(NOW()) возвращает номер дня недели для текущей даты.

Чтобы получить функцию, которая определяет, является ли день в ячейке A1 рабочим днем, используйте функции IF и WEEKDAY следующим образом: IF(WEEKDAY(A1;2)<6;"Рабочий день";"Выходной").

В Microsoft Excel аналог этой функции называется ДЕНЬНЕД.

WEEKNUM

Функция WEEKNUM определяет номер недели в году для системного значения даты. По международному стандарту ISO 8601 первым днем недели считается понедельник. Неделя, часть которой приходится на один год, а часть — на другой, считается принадлежащей тому году, на который приходится больше дней этой недели. Это означает, что первой неделей любого года является неделя, в которую входит 4-е января. Синтаксис этой функции имеет вид:

WEEKNUM(число; режим)

Где число — берется из системной даты; режим — определяет начало недели и тип вычислений:

воскресенье = 1

понедельник = 2

Примеры:

Функция WEEKNUM("11.01.09";2) возвращает номер 2.
Функция WEEKNUM("29.11.07";2) возвращает номер 48.

В Microsoft Excel аналог этой функции называется НОМНЕДЕЛИ.

WORKDAY

Функция WORKDAY возвращает дату в числовом формате, отстоящую на заданное количество рабочих дней вперед или назад от даты нач_дата. Рабочими днями не считаются выходные дни и дни, перечисленные в аргументе праздники. Эта функция имеет следующий синтаксис:

=WORKDAY (нач_дата; количество_дней; праздники)

Где нач_дата — это начальная дата в числовом формате. Если начальная дата попадает на рабочий день, этот день также будет учтен.; кон_дата — это дата в числовом формате, которая представляет конечную дату; количество_дней — это количество не выходных и не праздничных дней до или после нач_дата, положительное значение аргумента количество_дней означает будущую дату, а отрицательное значение — означает прошедшую дату; праздники — это необязательный массив из одной или нескольких дат в числовом формате, которые требуется исключить из рабочего календаря, например государственные праздники. В ячейке A1 укажите 01.01.09. Для составления праздников заполним ячейки, где в столбце А (ячейки с А3 по А19) будут наименования праздников, а в столбце В (ячейки с В3 по В19) даты праздников:

Новый год

01.01.11

Продолжение Нового года

02.01.11

Продолжение Нового года

03.01.11

Продолжение Нового года

04.01.11

Продолжение Нового года

05.01.11

Продолжение Нового года

06.01.11

Рождество Христово

07.01.11

Продолжение Нового года

08.01.11

Продолжение Нового года

09.01.11

Продолжение Нового года

10.01.11

День Защитника Отечества

23.02.11

Международный Женский день

08.03.11

Международный день солидарности

01.05.11

Продолжение Дня солидарности

02.05.11

День Великой Победы

09.05.11

День России

12.06.11

День освобождения Кремля

04.11.11

Например, составим формулу:

=WORKDAY (A1; 31; B3:B19)

возвратит дату 24 февраля 2011 года. Если дата выведена в виде числа, то выберите формат даты.

В Microsoft Excel аналог этой функции называется РАБДЕНЬ.

YEAR, MONTH, DAY

Функции YEAR, MONTH, DAY возвращают год, месяц и день, соответствующий аргументу дата_в_числовом_формате. При этом год определяется как целое в интервале 1583 до 9956 или от 0 до 99. Месяц определяется как целое в интервале от 1 (Январь) до 12 (Декабрь). Возвращает номер дня в месяце для даты в числовом формате. День возвращается как целое число диапазоне от 1 до 31. Синтаксис этих функций следующий:

=YEAR (дата_в_числовом_формате)
=MONTH (дата_в_числовом_формате)
=DAY (дата_в_числовом_формате)

Где дата_в_числовом_формате — это код дата-время, используемый в Microsoft Excel для вычислений с датами и периодами времени. Можно задать аргумент дата_в_числовом_формате как текст, например, как "25 Авг 2000" или "08.03.04", а не как число;

Текст автоматически преобразуется в дату в числовом формате.

Для номера дня 38163 функции YEAR, MONTH и DAY:

=YEAR (38163)
=MONTH (38163)
=DAY (38163)

вернут дату: 25 июня 2004 года.

В Microsoft Excel аналоги этих функций называются ГОД, МЕСЯЦ, ДЕНЬ.

YEARFRAC

Функция YEARFRAC возвращает долю года, которую составляет количество дней между начальной и конечной датами. Синтаксис этой функции следующий:

=YEARFRAC (нач_дата; кон_дата; базис)

Где нач_дата — это дата в числовом формате, которая соответствует начальной дате; кон_дата — это дата в числовом формате, которая соответствует конечной дате; базис — это тип используемого способа вычисления дня.

При составлении формулы следует помнить, что если любой из аргументов не число, то функция YEARFRAC возвращает ошибку; если нач_дата или кон_дата не являются допустимой датой в числовом формате, то функция YEARFRAC возвращает ошибку; если базис < 0 или если базис > 4, то функция YEARFRAC возвращает ошибку.

Базис

Способ вычисления дня

0 или опущен

US (NASD) 30/360

1

Фактический/фактический

2

Фактический/360

3

Фактический/365

4

Европейский 30/360

Например, составим следующую формулу:

=YEARFRAC ("01.01.04";"01.07.04")

Ответом будет 0,5 года.

Если изменить второй аргумент всего на один день:

=YEARFRAC ("01.01.04";"30.06.04")

то ответ будет уже другой: 0,497222222.

В Microsoft Excel аналог этой функции называется ДОЛЯГОДА.