Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Тип данных Date




Все вы видели часы в правой части панели задач 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 года.

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

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

Функция Результат
Debug.Print Date Печатается сегодняшнее число (то, что на панели задач Windows)
Debug.Print Time Печатается сколько сейчас времени
Debug.Print Now Печатается сегодняшнее число и сколько сейчас времени

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

Debug.Print DatePart("m", D) 2 (функция выделяет из даты номер месяца в году)
Debug.Print DatePart("q", D) 1 (функция выделяет из даты номер квартала в году)
Debug.Print DatePart("s", D) 7 (функция выделяет из даты номер секунды в минуте)
Debug.Print DatePart("w", D) 7 (функция выделяет из даты номер дня в неделе, но делает это по-американски, а в США первый день недели - воскресенье, значит 7-й - суббота)
Debug.Print DatePart("w", D, vbMonday)) 6 (а здесь мы попросили функцию считать первым днем недели понедельник ( vbMonday ) и поэтому результат она выдала привычный для нас - 6-й день - суббота)

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

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

 

Debug.Print DateAdd("s", 10, D) 14.02.09 16:45:17 (функция добавляет к дате 10 секунд)
Debug.Print DateAdd("m", -1, D) 14.01.09 16:45:07 (функция вычитает из даты 1 месяц)

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

Debug.Print DateDiff("h", D1, D2) 43 (количество часов, прошедших с момента даты D1 до момента даты D2)

 

Debug.Print Timer 53861,97 (количество секунд, прошедших с полуночи. Не путайте функциюTimer с элементом управления Timer. Результат выдается, как видите, с двумя знаками после запятой, но не верьте сотым долям, десятые же более менее точны)
Debug.Print MonthName(5) Май
Debug.Print WeekdayName(4) Четверг (как видите, работает по-нашему, а не по американски)

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

Date= #05/22/2004# Это не безобидная функция Date, которая только сообщает, какое сегодня число, это оператор Date, который устанавливает системные часы Windows на ту дату, какую вы указали. Ничего особо страшного, конечно, от установки неправильной даты не будет, компьютер не сломается, но вот, например, сохраняемые вами файлы будут иметь неправильную дату сохранения, а это приведет к путанице в вашем файловом хозяйстве. Да и некоторые программы могут начать жаловаться. Отличить функцию от оператора с тем же именем просто - они встречаются по разные стороны знака равенства в операторе присваивания, причем функция всегда справа.
Time= #10:44:00 AM# Аналогично

 

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

Строковый параметр Смысл
yyyy Год
q Квартал в году
m Номер месяца в году
y Номер дня в году
d Номер дня в месяце
w Номер дня в неделе (№1 - воскресенье)
ww Номер недели в году
h Час в сутках
n Минута в часе
s Секунда в минуте

 

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

 

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

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

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

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




Поделиться с друзьями:


Дата добавления: 2014-12-23; Просмотров: 412; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.