В этой статье мы рассмотрим функции vbs для работы с датой и временем. Они позволяют получать значение текущей даты и времени, включать таймер для вычисления времени, затраченного на выполнение заданного блока кода. Извлекать по отдельности значения часов, минут и секунд из времени, или значения год, месяц и день из даты.
Хорошо, давайте приступим.
Функции vbs для работы с датой и временем
Date – позволяет получить текущую дату (число, месяц и год).
'***********************************' Текущая дата' date.vbs'*********************************** MsgBox date |
DateAdd(iterval, number, date) – добавляет к заданной дате date заданный промежуток iterval:
interval — параметр определяет тип интервала, является строковой константой и может принимать следующие значения:
- yyyy — год;
- q — квартал;
- m — месяц;
- y — номер дня в году;
- d — день;
- w — номер дня в неделе;
- ww — номер недели в году;
- h — час;
- n — минута;
- s — секунда;
number – определяет число интервалов, параметр принимает как положительные, так и отрицательные значения. Если передано дробное число, то оно округлится.
'***********************************' Отсчет даты' dateadd.vbs'*********************************** dim my_date my_date = #10/05/2000# ' назад на 4 месяцаMsgBox dateadd("m",-4,my_date) '05.06.2000 ' вперед на 222 000 часовMsgBox dateadd("h",222000,my_date) '01.02.2026 |
DateDiff(interval, date1, date2[, firstdayofweek [, firstweekofyear]]) – позволяет получить значение временных интервалов (interval — параметр описан в функции vbs AddDate). Аргументы date1, date2 – те даты, между которыми вычисляется разница. firstdayofweek – позволяет указать, с какого дня нужно считать начало недели, firstweekofyear — это константа, показывающая, какую неделю следует считать первой в году.
'***********************************' интервал' DateDiff.vbs'*********************************** dim my_date_1, my_date_2 my_date_1 = #10/05/2000#my_date_2 = #10/05/2012# ' промежуток 4383 дняMsgBox DateDiff("d", my_date_1, my_date_2)' промежуток в 24 часаMsgBox DateDiff("h", "20/10/2000", "21/10/2000") |
DatePart(interval, date [, firstdayofweek [, firstweekofyear]]) – возвращает указанную часть даты, например день, месяц и так далее.
'***********************************' парсинг даты' DatePart.vbs'*********************************** dim my_datedim y, m, ddim list my_date = date ' годy = DatePart("yyyy", my_date) ' месяцm = DatePart("m", my_date) ' деньd = DatePart("d", my_date) list="" & "год:" & vbTab & y & vbCrLflist=list & "месяц:" & vbTab & m & vbCrLflist=list & "день:" & vbTab & d MsgBox list |
DateValue(date) – в этой функции vbs происходит проверка на корректную дату.
'***********************************' Проверка на дату' DateValue.vbs'*********************************** dim my_datedim y, m, ddim list my_date = date MsgBox DateV иalue(my_date) 'вернет текущую датуMsgBox DateValue("20, сентябрь, 2000") '20.09.2000MsgBox DateValue("20,05,2000") '20.05.2000MsgBox DateValue(20062012) 'Ошибка |
Hour(time) – данная vbs функция позволяет извлечь значение часа из передаваемого параметра time. Возвращается целое число в диапазоне от 0 до 23.
'***********************************' Получаем число часов' hour.vbs'*********************************** dim date_1, date_2, date_3 date_1 = datedate_2 = "22:33"date_3 = #15/10/2013 11:25# MsgBox hour(date_1) '0MsgBox hour(date_2) '22MsgBox hour(date_3) '11 |
Minute(time) – аналог Hour(), только вернёт число минут в диапазоне от 0 до 59.
'***********************************' Получаем количество минут' Minute.vbs'*********************************** dim date_1, date_2, date_3 date_1 = datedate_2 = "22:33"date_3 = #15/10/2013 11:25# MsgBox minute(date_1) '0MsgBox minute(date_2) '33MsgBox minute(date_3) '25 |
Month(date) — выделяет номер месяца из даты, заданной параметром date. Возвращает целое число от 1 до 12.
'***********************************' Определяем номер месяца' Month.vbs'*********************************** dim date_1, date_2, date_3 date_1 = datedate_2 = "22:33"date_3 = #15/10/2013 11:25# MsgBox month(date_1) 'текущий месяцMsgBox month(date_2) '12MsgBox month(date_3) '10 |
MonthName(month [, abbr]) – позволяет получить наименование месяца. Параметр month – целое значение в диапазоне от 1 до 12 (номер месяца), параметр abbr – булево значение, если установлено true – краткий формат, если false – полный формат, по умолчанию — false.
'***********************************' Имя месяца' MonthName.vbs'*********************************** MsgBox MonthName(5,true) ' майMsgBox MonthName(5,false) ' Май |
Now – аналогично функции vbs Date, но помимо текущей даты возвращает и время.
'***********************************' Получение текущей даты и времени' Now.vbs'*********************************** dim date_1, date_2 date_1 = datedate_2 = now MsgBox date_1 ' вернет датуMsgBox date_2 ' вернет дату и время |
Time – собственно, вернёт текущее системное время.
'***********************************' Системное время' Time.vbs'*********************************** OptionExplicit dim cur_time cur_time = time MsgBox cur_time |
Timer – вернёт количество прошедших с полуночи секунд (точность до 1 миллисекунды, три знака после комы). Удобно использовать для вычисления времени, затраченного на выполнение блока кода.
'***********************************' Таймер' Timer.vbs'*********************************** OptionExplicit Dim Old_Time, Time_Elapsed, N, IOld_Time = TimerN = 0For I = 1 To 100000 N = N + 1NextTime_Elapsed = Timer - Old_Time ' Время выполнения циклаMsgBox "Цикл выполнялся " & Time_Elapsed |
TimeSerial(hour, minute, second) – вернёт тип Вариант подтипа Date с указанным временем, тут параметр hour – часы, диапазон от 0 до 23, minute – минуты, диапазон от 0 до 59, second – секунды, от 0 до 59. Если значение параметра превышает заданный предел, то это повлияет на следующий параметр.
'***********************************' Задаем время' TimeSerial.vbs'*********************************** OptionExplicit Dim my_time_1, my_time_2 my_time_1 = TimeSerial(12,30,25)my_time_2 = TimeSerial(30,-50,25) MsgBox my_time_1 & vbCrLf & my_time_2 |
TimeValue(time) — вернёт переменную подтипа Date, которая соответствует времени, заданному параметром time. Параметр time может содержать строку, литерал времени или тип Дата.
'***********************************' вернуть значение времени' TimeValue.vbs'*********************************** OptionExplicit Dim a, b, c a = nowb = "20.12.13 22:33"c = #10/10/2010#MsgBox TimeValue(a) & vbCrLf & TimeValue(b) & VbCrLf & TimeValue(c) |
Weekday(date[, firstdayofweek]) — возвращает номер дня недели для даты, заданной параметром date. Параметр firstdayofweek — это константа, показывающая, какой из дней недели следует считать первым.
'***********************************' получаем номер недели' Weekday.vbs'*********************************** OptionExplicit Dim WDWD = Weekday(#02/12/1976#, vbMonday) ' WD = 4 -- четверг MsgBox WD |
WeekdayName(weekday [, abbr[, firstdayofweek]]) — возвращает наименование для дня недели с порядковым номером weekday. Если логический параметр abbr равен true, то наименование дня недели представляется в виде аббревиатуры, в противном случае — в полном виде. Значение параметра firstdayofweek здесь то же, что и в функции Weekday.
'***********************************' получаем имя дня недели' WeekdayName.vbs'*********************************** OptionExplicit Dim MyDateMyDate = WeekdayName(4, False, vbMonday) ' Вернет "четверг" MsgBox MyDate |
Year(date) — выделяет год из даты, заданной параметром date, и возвращает это целое число.
'***********************************' вернуть номер года' Year.vbs'*********************************** OptionExplicit Dim a, b, c a = nowb = "20.12.13 22:33"c = #10/10/2010# MsgBox Year(a) & vbCrLf & Year(b) & VbCrLf & Year(c) |