Дипломы, курсовые, рефераты, контрольные...
Срочная помощь в учёбе

Работа с датами и временем

РефератПомощь в написанииУзнать стоимостьмоей работы

Например, так можно задать дату 1 декабря 1930 г.: #12/1/30#. Обратите внимание, что сначала указан месяц, а затем день. Если год вводится нс полностью (две последние цифры), то VBA использует интервал лет между 1930 и 2029 гг. Прежде чем описывать функции для работы с датами и временем в табл. 10.4 приведем возможные значения некоторых параметров, которые используются в качестве аргументов этих… Читать ещё >

Работа с датами и временем (реферат, курсовая, диплом, контрольная)

В VBA существует специальный тип данных Date для работы со значениями дат и времени. Переменные типа Date сохраняются как 64-разрядные (8-байтовые) числа с плавающей точкой. Целая часть числа представляет значение даты (количество дней), а дробная — значение времени (доля суток). Полночи соответствует значение 0.0, а полудню — значение 0.5. Отсчет дат начинается с 31 декабря 1899 г., так что нулевым днем является 30 декабря 1899 г. Отрицательные целые числа представляют даты до 30 декабря 1899 г. Диапазон возможных значений дат от 1 января 100 г. до 31 декабря 9999 г. и значения времени от 0:00:00 до 23:59:59.

Для явного указания дат в тексте программы их следует заключать в символы #. Конкретный формат даты зависит от настроек компьютера.

Например, так можно задать дату 1 декабря 1930 г.: #12/1/30#. Обратите внимание, что сначала указан месяц, а затем день. Если год вводится нс полностью (две последние цифры), то VBA использует интервал лет между 1930 и 2029 гг.

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

Таблица 10.4

Параметры, используемые в VBA при работе с датами и временем.

11араметр

Значение параметра.

Интервал.

Определяет нужный компонент даты. Возможные значения параметра: «уууу» — год, «у» квартал, «т» месяц, «у» день года, «с!» день месяца, «да» — день недели, «дада» — неделя, «И» — часы, «п» — минуты, «5» — секунды.

Первый_день.

Определяет, какой день недели считать первым. Если он опущен, первым днем недели считается воскресенье. Возможные значения параметра: 0 — используется значение национальных системных установок, 1 — воскресенье (по умолчанию), 2 — понедельник, 3 — вторник, 4 — среда, 5 — четверг, 6 — пятница, 7 — суббота.

Первая_неделя.

Определяет, какая неделя считается первой неделей года. Возможные значения параметра: 0 — используется значение национальных системных установок, 1 — неделя, которая содержит 1 января (по умолчанию), 2 — первая неделя, которая содержит, по крайней мере, четыре дня нового года, 3 — первая полная неделя года.

Функции для работы с датами и временем приведены в табл. 10.5.

Таблица 10.5

Функции VBA для работы с датами и временем.

Функция.

Описание.

Date.

Возвращает значение, содержащее текущую системную дату.

Time.

Возвращает значение, содержащее текущее системное время.

Now.

Возвращает значение, содержащее текущую дату и время по системному календарю и часам компьютера.

Ноиг (время).

Возвращает целое число (от 0 до 23 включительно), которое представляет часы в значении времени.

МппЦе (время).

Возвращает целое число (от 0 до 59 включительно), которое представляет минуты в значении времени.

Second (время).

Возвращает целое число (от 0 до 59 включительно), которое представляет секунды в значении времени.

Day (дата).

Возвращает целое число (от 1 до 31 включительно), которое представляет день месяца в значении даты.

Mon th (дата).

Возвращает целое число (от 1 до 12 включительно), которое представляет месяц в значении даты.

Функция.

Описание.

Уеаг (дата).

Возвращает целое число, представляющее год в значении даты.

Weekday {дата [ ,;первый день])

Возвращает целое число (от 1 до 7), представляющее номе]) дня недели в значении даты.

D at с Ра rt (интервал, дата

[ , первый_день [, первая_неделя ] ]).

Возвращает значение, содержащее компонент даты, указанный в параметре интервал. Например, номер месяца, номер недели, номер дня в году и т.н.

DateSerial (nm, месяц, день).

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

TimeScrial (4acbi, минуты, секунды).

Возвращает время во внутреннем представлении системы, полученное из отдельных компонентов (часов, минут и секунд). Аргументы могут быть выражениями.

ижеВЩинтервал, дата, дата2 [ , первый_день | , первая_неделя)

Возвращает разность между двумя датами (дата2 — дата 1) в заданных интервалах (годах, днях, неделях, кварталах и т. д.). Если значение нецелое, то оно округляется с избытком. Поэтому при сравнении дат 31 декабря и 1 января следующего года функция для интервала типа год («уууу») возвращает значение 1, хотя разница между датами составляет всего один день.

DateAdd (w7/we/?0tf.7, количество, дата)

Возвращает новую дату, которая получена путем добавления к указанной дате заданного количества интервалов. Например, DateAdd («m», 1, «31-янв-04 «) возвратит дату «29-фев-04» .

Пример 10.8.

Функция, вычисляющая последний день месяца для указанной даты.

Решение

Public Function Prim8(Дата As Date) As Date.

Prim8 = DateSerial (Year (Дата), Month (Дата) + 1, 0).

End Function.

Дата во внутреннем представлении — это количество дней, прошедших от установленного в системе начального значения. Функция DateSerial просто вычисляет, но заданным значениям аргументов это число. Аргументы функции могут отличаться от календарных значений, как в нашем случае, они могут быть даже отрицательными, лишь бы полученный результат попадал в допустимый диапазон значений данных типа Date.

Пример 10.9.

Функция, которая для заданной даты определяет дату ближайшего понедельника. Если дата приходится на понедельник, то выдастся та же самая дата.

Решение

Public Function Prim9(Дата As Date) As Date Prim9 = Дата + (8 — Weekday (Дата, 2)) Mod 7 End Function.

Функция Weekday вернет номер дня недели для аргумента Дата. Если это понедельник, то функция вернет 1. В этом случае (8 — 1) Mod 7 равно нулю, поэтому дата не изменится. Для воскресенья значение (8 — 7) Mod 7 равно 1. Добавив к указанной дате 1, действительно получим понедельник.

Чтобы для понедельников выдавалась дата следующего понедельника, нужно изменить вторую строку нашей функции на.

Prim9 = Дата + 8 — Weekday (Дата, 2).

Как мы видим, к дате можно с помощью обычной операции сложения добавить целое число (количество дней) и мы получим дату через это количество дней. При этом не нужно думать о том, что это может быть другой месяц или даже год. Можно и вычитать из одной даты другую. Если дробные части этих чисел были равны нулю, то получим разницу в днях. Если же было указано и время, то целая часть результата равна количеству полных суток между датами, а дробная определяет время в неполных сутках. Используя функции Hour, Minute, Second можно определить, сколько это часов, минут и секунд.

Показать весь текст
Заполнить форму текущей работой