Урок 11 по VBScript: Функции vbs для работы с датой и временем

Урок 11 по VBScript: Функции vbs для работы с датой и временем Программирование на VBSCRIPT

В этой статье мы рассмотрим функции 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)
Оцените статью
Технологии программирования и ведение блога
Добавить комментарий

  1. Привет

    здравсвтуйте, подскажите пожалуйста как сохранить полученную дату в текстовый документ?
    В данных примерах просто выходит окно, а хотелось бы, чтобы информация о дате сохранялась в ткстовый файл

    Ответить
    1. Coding автор

      Здравствуйте,

      Все предельно просто:

      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 — Как создать текстовый файл

      Ответить