В этой статье мы рассмотрим функции 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_date dim y, m, d dim list my_date = date ' год y = DatePart("yyyy", my_date) ' месяц m = DatePart("m", my_date) ' день d = DatePart("d", my_date) list="" & "год:" & vbTab & y & vbCrLf list=list & "месяц:" & vbTab & m & vbCrLf list=list & "день:" & vbTab & d MsgBox list |
DateValue(date) – в этой функции vbs происходит проверка на корректную дату.
'*********************************** ' Проверка на дату ' DateValue.vbs '*********************************** dim my_date dim y, m, d dim list my_date = date MsgBox DateV иalue(my_date) 'вернет текущую дату MsgBox DateValue("20, сентябрь, 2000") '20.09.2000 MsgBox DateValue("20,05,2000") '20.05.2000 MsgBox DateValue(20062012) 'Ошибка |
Hour(time) – данная vbs функция позволяет извлечь значение часа из передаваемого параметра time. Возвращается целое число в диапазоне от 0 до 23.
'*********************************** ' Получаем число часов ' hour.vbs '*********************************** dim date_1, date_2, date_3 date_1 = date date_2 = "22:33" date_3 = #15/10/2013 11:25# MsgBox hour(date_1) '0 MsgBox hour(date_2) '22 MsgBox hour(date_3) '11 |
Minute(time) – аналог Hour(), только вернёт число минут в диапазоне от 0 до 59.
'*********************************** ' Получаем количество минут ' Minute.vbs '*********************************** dim date_1, date_2, date_3 date_1 = date date_2 = "22:33" date_3 = #15/10/2013 11:25# MsgBox minute(date_1) '0 MsgBox minute(date_2) '33 MsgBox minute(date_3) '25 |
Month(date) — выделяет номер месяца из даты, заданной параметром date. Возвращает целое число от 1 до 12.
'*********************************** ' Определяем номер месяца ' Month.vbs '*********************************** dim date_1, date_2, date_3 date_1 = date date_2 = "22:33" date_3 = #15/10/2013 11:25# MsgBox month(date_1) 'текущий месяц MsgBox month(date_2) '12 MsgBox 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 = date date_2 = now MsgBox date_1 ' вернет дату MsgBox date_2 ' вернет дату и время |
Time – собственно, вернёт текущее системное время.
'*********************************** ' Системное время ' Time.vbs '*********************************** Option Explicit dim cur_time cur_time = time MsgBox cur_time |
Timer – вернёт количество прошедших с полуночи секунд (точность до 1 миллисекунды, три знака после комы). Удобно использовать для вычисления времени, затраченного на выполнение блока кода.
'*********************************** ' Таймер ' Timer.vbs '*********************************** Option Explicit Dim Old_Time, Time_Elapsed, N, I Old_Time = Timer N = 0 For I = 1 To 100000 N = N + 1 Next Time_Elapsed = Timer - Old_Time ' Время выполнения цикла MsgBox "Цикл выполнялся " & Time_Elapsed |
TimeSerial(hour, minute, second) – вернёт тип Вариант подтипа Date с указанным временем, тут параметр hour – часы, диапазон от 0 до 23, minute – минуты, диапазон от 0 до 59, second – секунды, от 0 до 59. Если значение параметра превышает заданный предел, то это повлияет на следующий параметр.
'*********************************** ' Задаем время ' TimeSerial.vbs '*********************************** Option Explicit 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 '*********************************** Option Explicit Dim a, b, c a = now b = "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 '*********************************** Option Explicit Dim WD WD = Weekday(#02/12/1976#, vbMonday) ' WD = 4 -- четверг MsgBox WD |
WeekdayName(weekday [, abbr[, firstdayofweek]]) — возвращает наименование для дня недели с порядковым номером weekday. Если логический параметр abbr равен true, то наименование дня недели представляется в виде аббревиатуры, в противном случае — в полном виде. Значение параметра firstdayofweek здесь то же, что и в функции Weekday.
'*********************************** ' получаем имя дня недели ' WeekdayName.vbs '*********************************** Option Explicit Dim MyDate MyDate = WeekdayName(4, False, vbMonday) ' Вернет "четверг" MsgBox MyDate |
Year(date) — выделяет год из даты, заданной параметром date, и возвращает это целое число.
'*********************************** ' вернуть номер года ' Year.vbs '*********************************** Option Explicit Dim a, b, c a = now b = "20.12.13 22:33" c = #10/10/2010# MsgBox Year(a) & vbCrLf & Year(b) & VbCrLf & Year(c) |
здравсвтуйте, подскажите пожалуйста как сохранить полученную дату в текстовый документ?
В данных примерах просто выходит окно, а хотелось бы, чтобы информация о дате сохранялась в ткстовый файл
Здравствуйте,
Все предельно просто:
Option Explicit
dim fso, c_file, t_file, WshShell, data, data_file
set WshShell = CreateObject("Wscript.Shell")
set fso=CreateObject ("Scripting.FileSystemObject")
'------------------------------------------------------------------------------------
' Считываем дату
'------------------------------------------------------------------------------------
dim date_1, date_2
date_1 = date
date_2 = now
'------------------------------------------------------------------------------------
'------------------------------------------------------------------------------------
' создаем в текущей папке текстовый документ
' записываем данные
'------------------------------------------------------------------------------------
set t_file=fso.CreateTextFile("my_file.txt", true)
t_file.WriteLine(date_1 & vbCrLf & date_2)
t_file.Close ()
'------------------------------------------------------------------------------------
' освобождаем ссылку на объект
set t_file = nothing
'------------------------------------------------------------------------------------
' открываем созданный документ и считываем данные
'------------------------------------------------------------------------------------
set t_file=fso.OpenTextFile(WshShell.CurrentDirectory & "\my_file.txt", 1, false)
data_file = t_file.ReadAll
t_file.Close()
'------------------------------------------------------------------------------------
' выводим содержимое
WScript.Echo data_file
Читайте:
Объект FileSystemObject метод OpenTextFile — Как открыть текстовый файл
Объект FileSystemObject метод CreateTextFile — Как создать текстовый файл