|
Тип данных DateDate: 2015-10-07; view: 403. Глава 11. Работа с таймером, временем, датами Мы с вами пока не умеем управлять временем. А это нам необходимо для работы с анимацией, а также для решения полезных и интересных задач, приведенных в этой главе. Собственно, все игры с одновременным движением персонажей делаются с помощью таймера. Венец главы - создание вашего первого реального проекта "Будильник-секундомер". Все вы видели часы в правой части панели задач Windows. Если на них поставить мышь, они покажут дату. Давайте сделаем что-нибудь получше, а именно - большие, красивые часы-будильник, а заодно и секундомер. Для этого нам нужно познакомиться с новым типом данных - типом даты и времени суток - Date. Вы пока знакомы с числовыми и строковым типами. Тип Date тоже, в принципе, числовой, но, сами понимаете, специфический. Если, например, в нем к 0:40 прибавить 0:40, то получится 1:20. Когда вы пишете в окне кода программу, в ней встречаются числа, строки, а теперь вы должны научиться писать в программе дату и время суток. Чтобы Visual Basic понял, что перед ним число, вы просто пишете число, и он понимает. Чтобы Visual Basic понял, что перед ним строка, вы пишете строку и берете ее в двойные кавычки, и он понимает, что это строка. Чтобы Visual Basic понял, что перед ним дата или время суток, вы правильно записываете дату и время и заключаете их между значками #, и он понимает. Например, так: #2/16/2002#. Это 16 февраля 2002 года. Как правильно записывать дату и время в других случаях, вы поймете из примеров: 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 секунд после полудня (PM) Debug.Print #2/28/1998 10:45:00 PM# '10 часов 45 минут вечера 28 февраля 1998 года D = #12/25/2044# T = #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 года. Учитывая вышесказанное, вы можете наладить сложение и вычитание дат и времени. Однако, лучше это делать с помощью специальных функций, которые мы сейчас и рассмотрим. Функции для работы с датами и временем суток
Пусть D = # 2/14/2009 4:45:07 PM # (это суббота), тогда:
Значением функции DatePart является число типа Integer, а не дата. Все возможные значения строкового параметра для функций работы с датами приведены в последней таблице этого параграфа.
Пусть D1 = #2/14/2009 4:45:07 PM# , D2 = #2/16/2009 11:32:43 AM# , тогда:
Опасные операторы:
Значения строкового параметра для функций работы с датами:
Есть еще кое-какие функции, но пока вам хватит и этих.
Задание 95: Напишите программу, которая, ничего у вас не спрашивая, печатает, какое число будет через 52 недели. Задание 96: Напишите одну-две строчки кода, которые, спросив у вас дату рождения и не спрашивая, какое сегодня число, печатают, сколько секунд вы живете на белом свете Задание 97: Напишите программу, которая, спросив у вас дату рождения и не спрашивая, какое сегодня число и был ли у вас в этом году день рождения, печатает, сколько дней вам осталось до следующего дня рождения. Задание 98: Я знаю, что високосных годов раз в четыре года ученым не хватает. Поэтому, не то где-то раз в много лет вклинивается лишний високосный год, не то иногда где-то в каком-то месяце бывает лишний день. Не знаю. Может быть Visual Basic подскажет?
|