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 секунд еще одна, и так далее.