MyTetra Share
Делитесь знаниями!
ВРЕМЯ И ТАЙМЕРЫ
Время создания: 31.07.2019 22:37
Текстовые метки: VB
Раздел: Разные закладки - VBA
Запись: xintrea/mytetra_db_adgaver_new/master/base/1520589868o5o5xjr8v8/text.html на raw.githubusercontent.com

7. ВРЕМЯ И ТАЙМЕРЫ

 

7.1. Понятия овремени в Visual Basic


Работа Visual Basic со временем заметно отличается от того, как это происходит в повседневной жизни. Для выполнения операций с ним в Visual Basic использу­ются данные типа «Date», для которых основной единицей измерения является день. Один час равен 1/24 дня, а секунда — 1/86400 дня.

Неделя будет представлена цифрой 7, поскольку состоит из семи дней. Данные типа «Date» отображают время в соответствии с темформатом, который установлен на компьютере, —12- или 24-часовым(см. «Панель управления» Windows).

В юлианском календаре первый день нашей эры —это 1 января 0001 года. Для данных типа «Date» выбрано другое начало отсчета: первый день —это 31 декабря 1899 года, второй день — 1 января 1900 года.Таким образом, 12 июня 1968 года —это день 25001-й или просто 25001 (другими словами, это 25001-й день, если считать от 31 декабря 1899 года). Дата 25001.5 переводится как полдень 12 июня 1968 года.Даты до 31 декабря 1899 года имеют отрицательные значения, например, 4 июля 1776 года —это -45103 день, т.е.45103 день до 30 декабря 1899года.

Переменной типа «Date» можно присвоить литерал (т.е.буквальное значение) даты, разместив его между знаками «#», например:


Dim MyDate as Date

MyDate = #January 25, 1999#



Примечание


Хотя в Visual Basic обещается поддержка националь­ных форматов даты из панели управления, русскоязычное представление работать от­казывается.


 

Кроме того, тип «Date» можно преобразовать в любойчисловой формат. Например, 4 августа 1997 года,22 часа 56 минут выглядит как 35390.58333 в формате «Double». Все, что находится слева от десятичной точки– это день, а после точки –часы, минуты, секунды и миллисекунды. Обратите внимание, что дробную часть значения менее 1 можно ис­пользовать для указания только времени; например, 0.12345 означает 2:57:46 пополудни.

 

7.2.Элемент управления таймером

В VisualBasic имеется элемент управления таймером –«Timer», который позволяет от­слеживать время. Его можно представлять себе как маленькие часы, которые, будучи включенными, вызывают некоторое программируемое событие через заданный интервал времени. Вызываемое таймером событие называется «Timer», процедура обра­ботки этогособытия в программе имеет следующий синтаксис:


Private Sub TimeName_Timer ()


·       TimeName – имя элемента управления таймером.

·       Timer– имя события.

 

Времямеждунаступлениемсобытий «Timer»указываетсяв свойстве «Interval»элементауправлениятаймером.Единицейизмеренияинтервалавремени вэтом свойствеявляетсямиллисекунда.В следующейстрокеинтервалвремениустановленравнымполусекунде:

Timer1.Interval = 500

 



Примечание

Максимальное значение свойства «Interval» – 65535. Это означает, что можно установить максимальный интервал между событиями, немного превышающий 65,5 сек. Длительность же наименьшего интервала – 55 мс, так как системные часы изменяют свои показания только 18 раз в секунду.

 

Свойству элементауправлениятаймером совсемнемного(табл. 10),посколькуглавная и единственнаяего задачасостоит вгенерациисобытия.

 

Таблица10

Свойстваэлементауправлениятаймером



Свойство

Описание

Name

Имя элемента управления. По умолчанию для первого таймера устанавливается «Timer1», для второго «Timer2» и т.д.

Enabled

Включает/выключает таймер. По умолчанию имеет значение True

Index

Индекс в массиве элементов управления.

Interval

Определяет интервал времени между наступлениями события «Timer»

Left

Определяет координату левого края таймера в форме

Tag

Свойство Tag похоже на переменную, встроенную непосредственно в элемент управления; с его помощью можно хранить данные, доступ к которым необходимо иметь в течение всего времени выполнения программы

Top

Определяет координату верхнего значения таймера в форме

 

 



Примечание

Таймер – это невидимка. Его свойства «Left» и «Tор» совершенно бесполезны, поскольку при работе про­граммы этот элемент управления невидим.

 

 

7.3.Использованиекоманд приработе современем

Хотятаймер иможнозапрограммироватьтак, чтобы онвопределенноевремя вызывалсобытие «Timer»,сам таймер незнает истинноготекущеговремени.Чтобыопределитьтекущеевремя,необходимообратиться ксистемнымчасамкомпьютера.

Чтобыузнатьсистемноевремя,используйтефункцию «Time», ачтобы узнатьсистемнуюдату –функцию «Date».Если женеобходимоузнать ивремя, и дату, воспользуйтесьфункцией «Now»:

Text1.Text = Time

Label2.Caption = Date

Text3.Text = Now

 

Иногдабываетнеобходимополучитьтолькоколичествочасов, минутили тольконазваниемесяца изсистемноговремени. Дляэтогопользуютсяследующимифункциями:

  • Hour(time) – возвращает значение типа «Integer», содержащее количество часов из времени, указанного в аргументе «time».
  • Minute(time) – возвращает значение типа «Integer», содержащее число минут из времени, указанного в аргументе «time».
  • Second(time) – возвращает значение типа «Integer», содержащее количество секунд из времени, указанного в аргументе «time».
  • Year(date) – возвращает значение типа «Integer», содержащее год из даты, указанной в аргументе «date».
  • Weekday(date[, week]) – возвращает значение типа «Integer», которое представляет день недели (от 1 до 7) из даты, указанной в аргументе «date». По умолчанию 1 – воскресенье, 2 – понедельник и т.д. С помощью необязательного параметра «week» можно указать, какой день нужно считать первым.
  • Day(date) – возвращает значение типа «Integer», содержащее день месяца из даты, указанной в аргументе «date».

 

При работе свременнымипараметрамиоченьполезнымифункциямиявляютсяследующие:

  • DateSerial(year, month, day) – возвращает значение типа «Date», которое представляет дату, составленную из указанных значений года (year), месяца (month) и дня (day).
  • DateValue(date) – возвращает значение типа «Date», которое представляет дату, полученную на основе аргумента «date». Как правило, аргумент имеет строковый тип и представляет дату в одном из допустимых форматов.
  • TimeSerial(hour, minute, second) – возвращает значение типа «Date», которое представляет время, составленное из указанных часов (hour), минут (minute) и секунд (second).
  • TimeValue(time) – возвращает значение типа «Date», которое представляет время, полученное на основе аргумента «time». Как правило, аргумент имеет строковый тип и представляет время в одном из допустимых форматов.
  • Timer – возвращает значение типа «Single», которое представляет число секунд, прошедших после полуночи.

 

Для ручнойустановкисистемноговремени идатыприменяютследующиеоператоры:

Time = time    и    Date = date,

которыеустанавливаютсистемноевремя и датувсоответствиисозначениямиаргументов «time» и «date»соответственно.

 

7.4.Вычислениеразницымежду датами

Еслипонадобитсянаписатьпрограмму,вычисляющуюинтервалвременимежду двумядатами, тонеобходимопользоватьсяфункцией «DateDiff»,имеющейследующийсинтаксис:

MyLong = DateDiff(interval, date1,date2[, week[, year]])

·       MyLong –возвращаемоезначениетипа «Variant» («Long»);

·       DateDiff– имя самойфункции;

·       interval– строкасимволов,описывающаяинтервал измерениядля разностимежду двумядатами (см.табл. 11);

·       date1– начальнаядатаизмеряемогоинтервала (тип«Date»);

·       date2– конечнаядатаизмеряемогоинтервала (тип«Date»);

·       week– константа,устанавливающаяпервый день недели;

·       year– константа,указывающаяпервуюнеделю года.

 

Таблица11

Значенияпараметра «interval»функции «DateDiff»



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

Интервал

Пример

Итоговое значение

“yyyy”

Год

DateDiff(“yyyy”, “4.7.76”, “4.7.86”)

10

“q”

Квартал

DateDiff(“q”, “4.7.76”, “4.7.86”)

40

“m”

Месяц

DateDiff(“m”, “4.7.76”, “4.7.86”)

120

“y”

День года

DateDiff(“y”, “4.7.76”, “4.7.86”)

3652

“d”

День месяца

DateDiff(“d”, “4.7.76”, “4.7.86”)

3652

“w”

День недели

DateDiff(“w”, “4.7.76”, “4.7.86”)

521

“ww”

Неделя

DateDiff(“ww”, “4.7.76”, “4.7.86”)

521

“h”

Час

DateDiff(“h”, “4.7.76”, “4.7.86”)

87648

“n”

Минута

DateDiff(“n”, “4.7.76”, “4.7.86”)

5258880

“s”

Секунда

DateDiff(“s”, “4.7.76”, “4.7.86”)

315532800

 

Функция«DateDiff»берет первуюдату,представленнуюпараметром «date1» ивычитает ееиз второйдаты,представленнойпараметром «date2».Выполниввычитание,функциявозвращает числовоезначениетипа «Long», котороеи являетсяразностьюдат. Единицуизмерениядляпредставленияответа указываютс помощьюпараметра «interval».

 

7.5.Использованиефункции «Format» дляпредставлениявремени

Функция«Format» – этомощнаяфункция Visual Basic,позволяющаяуправлятьотображениемстроки. Преимущественноэта функцияиспользуетсядляформатированиязначенийдаты, времении числовыхзначений, ноее можноиспользоватьлюбыми и слюбымистроковымизначениями.Функция «Format» имеет следующий синтаксис:

MyString =Format(expression, format [, week[, year]])

·       MyStrings–возвращаемоестроковоезначение;

·       Format–имя самойфункции;

·       expression– любоевыражение,представляющеестроку символов,датучисловоезначение;

·       format–строка-шаблон,котораяопределяетстрокурезультата.

·       week–необязательнаяконстанта,устанавливающаяпервый деньнедели. Поумолчаниюона имеетзначение «Sunday» (воскресенье),но можноустановитьдругое значение,например «Monday»(понедельник);

·       year–необязательнаяконстанта,указывающая первуюнеделю года.По умолчаниюэто неделя,на которуюприходится 1января. Номожно установитьи другоезначение,например первуюполнуюнеделю года.

 

Приработе сфункцией «Format»основныммоментомявляетсяумениеобращаться спараметром«format», которыйопределяет,как значениепараметра «expression»будетпреобразовыватьсяв строкусимволов. Втабл. 12показано, какиспользоватьнастройкифункции «Format»дляформатированиястрок синформациейо датевремени.

 

Таблица12

Примерыпредопределенныхформатов дляотображениявремени идаты



Параметр «format»

Пример

Результат

" Long Date"

Format (36000, "Long Date" )

24 Июль 1998 г.

"Medium Date"

Format (36000, "Medium Date" )

24-июл-98

"Short Date"

Format (36000, "Short Date" )

24.07.98

"Long Time"

Format (0.874, "Long Time" )

20:58:34

"Medium Time"

Format (0.874, "Medium Time" )

08:58

"Short Time"

Format (0.874, "Short Time" )

20:58

 

Этуфункциюможноиспользоватьдля нужногоформатаотображениялюбыхзначений, в томчислечисловых. Втабл. 13показано, какиспользоватьфункцию «Format»дляпредставлениячисловых значенийв виде строкисимволовнужного вида,используя предопределенныеформаты.

 

Таблица13

Использованиефункцииформат счисловымизначениями



Параметр «format»

Пример

Результат

"General Number"

Format (36000, "General Number")

36000 

"Currency"

Format (36000, "Currency")

$36,000.00 

" Fixed"

Format (36000, "Fixed" )

36000.00

"Standard"

Format (36000, "Standard")

36 000,00

" Percent"

Format (36000, "Percent" )

3600000,00%

"Scientific"

Format (36000, "Scientific")

3,60E+04

"Yes/No"

Format (36000, "Yes /No")

Yes

"True/False"

Format (36000, "True/False")

True

"On/Off"

Format (36000, "On /Off")

On

 

В функции «Format»можноиспользоватьтакжесобственные форматыпользователя.Онипредставляютсобойспециальную маску,по которойбудетформироватьсяитоговая строка.Дляформированиямаскииспользуютсядва символа:«#»(необязательныйсимвол) и «0»(обязательныйсимвол). Длядобавления встрокунекоторых определенныхсимволов ихдобавляют вмаску внужное место.Примериспользованияих приведен втаблице 14.

 

Таблица 14

Примериспользованиямаски вфункции «Format»



Число

Маска

Результат

23,256

“####.##”

23.256

“####.00 м”

23.25 м

“0000.##”

0023.256

“0000.0000 р/чел”

0023.2560 р/чел

 

 

Контрольныевопросы длясамопроверки

  1. Как в Visual Basic представляется время?
  2. Назначение элемента управления «Timer»? Какими свойствами он обладает?
  3. Как узнать текущее время и дату?
  4. Какие функции для работы со временем вы знаете?
  5. Как представить некоторое значение нужным образом?
  6. Какие предопределенные форматы вы знаете?
  7. Как создать формат пользователя?



Так же в этом разделе:
 
MyTetra Share v.0.65
Яндекс индекс цитирования