Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
При необходимости работы со значениями, обозначающими дату или время, соответствующая переменная должна иметь тип Date, диапазон значений которой находится в пределах от 1 января 100 года до 31 декабря 1999 года.
В языке Visual Basic для работы с датой и временем используется ряд форматов, общим для которых является то, что значения должны размещаться между так называемыми литералами даты и времени, в качестве которых используется знак #.
Например:
Dim dtmDate As Date dtmDate = #30-05-2000#
Значение, которое содержится в переменной типа Date, может быть как кратким (только дата или только время), так и полным (и дата, и время). Причем во втором случае значение времени должно указываться после даты.
Например:
dtmDate = #30-05-2000 20:30#
Следует отметить тот факт, что представление для значений переменных, преобразуемых из строки в дату, которое используется в языке Visual Basic по умолчанию, зависит от настроек вкладки Дата раздела Язык и стандарты в Панели управления (см. рис. 6.18). Т. е. в том случае, когда осуществляется преобразование строковой переменной в дату, из одной и той же строки в зависимости от установленного региона могут быть получены разные даты, например:
Dim strDate As String Dim dtmDate As Date strDate = "08/05/99" dtmDate = CDate(strDate)
Если приведенный выше программный код будет выполнен при установленном формате "дд/ММ/гг" региона Русский, то результатом будет дата 8 мая 1999 года. Если же программу запустить при настройке "ММ/дд/гг" региона Английский (США), то в этом случае результатом будет 5 августа 1999 года.
Для переменных, содержимым которых является дата, в языке Visual Basic по умолчанию используется формат #ММ/дд/гг#. Например, следующее значение переменной dtmDate:
dtmDate = "8/5/99"
что будет интерпретировано как дата 5 августа 1999 года, независимо от настроек Панели управления. Однако необходимо отметить, что в случае использования любого другого формата. Например:
dtmDate = "30/5/99" или
dtmDate = "30-05-99"
т. е. когда, в отличие от предыдущего случая, разночтения исключены, вводимое значение будет автоматически преобразовано в соответствии с форматом, используемым по умолчанию:
dtmDate = "5/30/99"
Над переменными типа Date возможно выполнение арифметических операций. В частности прибавление или вычитание целого числа приведет к увеличению или уменьшению количества дней. Если же подобную операцию выполнить с дробью, знаменателем которой является число 24, то соответствующим образом увеличится или уменьшится значение, обозначающее количество часов. Аналогичным способом можно изменить количество минут (знаменатель - 24 * 60).
Например:
Dim dtmDate As Date, dtmCurrent As Date
Dim intDate
dtmCurrent = Now
' Результат: #5/30/2000 12:11:56#
intDate = dtmCurrent - 5
' Результат: #5/25/2000 12:11:56#
intDate = dtmCurrent -5/24
' Результат: #5/30/2000 7:11:56#
intDate = dtmCurrent - 5 / (24 * 60)
' Результат: #5/30/2000 12:06:56#
Помимо выполнения арифметических операций, значения типа Date можно сравнивать друг с другом. Например:
Dim dtmDate1, dtmDate2 Dim strRelation As String dtmDate1 = #5/30/1999# dtmDate2 = #6/30/1999# If dtmDate1 < dtmDate2 Then
strRelation = "Date1 Меньше Date2" Else
strRelation = " Date1 Больше Date2" End If ' Результат: "Date1 Меньше Date2"
При работе с переменными типа Date используется большое количество функций, которые можно разделить на несколько основных категорий.
Определение текущей даты и времени. В этом случае функции используются без каких-либо параметров и отображают те или иные значения даты и времени, которые содержатся в системе на момент их вызова в программе (см. табл. 6.15).
Листинг 6.5. Определение текущей даты и времени
Dim dtmCurrent As Date
dtmCurrent = Now 'Результат: #5/30/2000 12:J1:56#
dtmCurrent = Date 'Результат: #5/30/2000#
dtmCurrent = Time 'Результат: #12:11:56#
Характеристики заданной даты и времени. В качестве параметра употребляемых функций указывается значение или имя переменной типа Date. При этом результатом их вызова являются различные характеристики используемой переменной (или заданного значения) (см. табл. 6.16).
Листинг 6.6. Характеристики заданной даты и времени
Dim dtmCurrent As Date
Dim intDate dtmCurrent = Now 'Результат: #5/30/2000 12:11:56#
intDate = Second(dtmCurrent) ' Результат: 56
intDate = Minute(dtmCurrent) ' Результат: 11
intDate = Hour(dtmCurrent) ' Результат: 12
intDate = Day(dtmCurrent) ' Результат: 30
intDate = Weekday(dtmCurrent) ' Результат: 3
intDate = WeekdayName(Weekday(dtmCurrent)) 'Результат: "среда"
intDate = Month(dtmCurrent) ' Результат: 5
intDate = MonthName(Month(dtmCurrent)) 'Результат: "Май"
intDate = Year(dtmCurrent) ' Результат: 2000
Работа с заданной датой и временем. Используемые в этом случае функции позволяют изменять заданную дату или время, определять ее отдельные характеристики, а также находить отношение двух дат (см. табл. 6.17).
Для изменения заданного значения даты или времени используется функция DateAdd, имеющая следующий формат:
DateAdd(uрmepвaл,число, дата)
Результатом вызова функции DateAdd будет дата с измененным на числовое значение интервалом, который является строкой и может принимать следующие значения (см. табл. 6.18):
При этом заданная дата с помощью параметра число может быть как увеличена, так и уменьшена.
Для определения отношения двух заданных значений дат следует использовать функцию DateDiff, которая имеет такой синтаксис:
DateDiff(интервал, дата1, дата2)
Число, полученное в результате вызова функции DateDiff, определяет разницу между значениями дата1 и дата2, которая измеряется в единицах указанного интервала (см. табл. 6.18).
Результатом может быть как положительное, так и отрицательное значение.
Для определения той или иной характеристики заданной даты используется функция DatePart, имеющая следующий формат:
DatePart(интервал, дата)
Результатом вызова функции DateDiff будет число, выражающее для заданной даты значение указанного интервала (см. табл. 6.18).
Листинг 6.7. Работа с заданной датой и временем
Dim dtmDate As Date, dtmCurrent As Date
Dim intDate As Integer
dtmCurrent = Now 'Результат: #5/30/2000 12:11:56#
dtmDate = DateAdd("m", 2, dtmCurrent) 'Результат: #7/30/2000 12:11:56#
dtmDate = DateAdd("d", -5, dtmCurrent) 'Результат: #5/25/2000 12:11:56#
intDate = DateDiff("w", #1/1/2000#, dtmCurrent) ' Результат: 21
intDate = DateDiff("d", #1/1/2000#, dtmCurrent) ' Результат: 150
intDate = DatePart("h", dtmCurrent) ' Результат: 12
intDate = DatePart("m", dtmCurrent) ' Результат: 11
Дата публикования: 2015-01-23; Прочитано: 240 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!