Выбрать главу

Dim D As Date

Dim T As Date

Dim DT As Date

Private Sub Command1_Click()

    Debug.Print #6/25/2001# '25 июня 2001 года

    Debug.Print #2:22:57 PM# '2 часа 22 минуты 57 секунд после полудня (РМ)

    Debug.Print #2/28/1998 10:45:00 PM# '10 часов 45 минут вечера 28 февраля 1998 года

    D = #12/25/2044#

    Т = #2:00:32 AM# '2 часа 00 минут 32 секунды до полудня (AM)

    DT = #1/15/2156 11:59:42 PM#

    Debug.Print D, T, DT

End Sub

Эта процедура напечатает такие результаты:

25.06.01 14:22:57

28.02.98 22:45:00

25.12.2044 2:00:32 15.01.2156 23:59:42

Пояснения: Как видите, в окне кода мы обязаны писать дату и время по-американски, то есть месяц писать раньше числа и разделять все это косыми чертами, а в обозначении времени суток обязательно указывать до или после полудня было дело. А вот результаты по этим не нашим данным печатаются все равно по-нашему, вернее, так, как настроена Windows (а у большинства она настроена на Россию). Поэтому же, если вы захотите задавать дату или время компьютеру таким оператором:

D = InputBox("Введите дату")

то вводить ее по-американски нельзя и значки # тоже нельзя ставить.

Есть и другие способы задания дат и времени, но они сложнее и я их пропущу. Скажу только, что если присвоить переменной типа Date обычное число, то оно будет преобразовано в дату и время. Так, фрагмент D = 26.5 Debug.Print D напечатает следующее:

25.01.1900 12:00:00

Пояснения: Число 26.5 считается количеством суток (двадцать шесть с половиной), прошедших с полуночи 30 декабря 1899 года.

Учитывая вышесказанное, вы можете наладить сложение и вычитание дат и времени. Однако, лучше это делать с помощью специальных функций, которые мы сейчас и рассмотрим.

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

Функция ∙ Результат

Debug.Print Date ∙ Печатается сегодняшнее число (то, что на панели задач Windows)

Debug.Print Time ∙ Печатается сколько сейчас времени

Debug.Print Now ∙ Печатается сегодняшнее число и сколько сейчас времени

Пусть D = # 2/14/2009 4:45:07 РМ # (это суббота), тогда:

Значением функции DatePart является число типа Integer, а не дата.

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

Пусть D1 = #2/14/2009 4:45:07 PM#, D2 = #2/16/2009 11:32:43 AM#, тогда:

Опасные операторы:

Значения строкового параметра для функций работы с датами:

Строковый параметр ∙ Смысл

YYYY ∙ Год

q ∙ Квартал в году

m ∙ Номер месяца в году

Y ∙ Номер дня в году

d ∙ Номер дня в месяце

w ∙ Номер дня в неделе (№ 1 — воскресенье)

ww ∙ Номер недели в году

h ∙ Час в сутках

n ∙ Минута в часе

s ∙ Секунда в минуте

Есть еще кое-какие функции, но пока вам хватит и этих.

Задание 95: Напишите программу, которая, ничего у вас не спрашивая, печатает, какое число будет через 52 недели.

Задание 96: Напишите одну-две строчки кода, которые, спросив у вас дату рождения и не спрашивая, какое сегодня число, печатают, сколько секунд вы живете на белом свете

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

Задание 98: Я знаю, что високосных годов раз в четыре года ученым не хватает. Поэтому, не то где-то раз в много лет вклинивается лишний високосный год, не то иногда где-то в каком-то месяце бывает лишний день. Не знаю. Может быть Visual Basic подскажет?

Таймер

Создайте новый проект. Поместите на форму таймер. Установите его свойство Interval равным 10000. Сделайте двойной щелчок по таймеру. В появившуюся заготовку процедуры впишите одну строчку:

Private Sub Timer1_Timer()

    Debug.Print "Процедура сработала"

End Sub

Запустите проект. Подождите немного. Через 10 секунд в окне Immediate появится строчка "Процедура сработала". Еще через 10 секунд появится такая же строчка, через 10 секунд еще одна, и так далее.