Тик так ходики...

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

 

Sleep

Практически в каждом примере, рассмотренном ранее, была использована команда Sleep. Это команда, останавливающая выполнение работы программы на определенное время, либо до нажатия клавиши.

Синтаксис:

Sleep (amount=-1 , keyflag=0)

  • amount - время ожидания в миллисекундах
  • keyflag - флаг. Если поставить в этом параметре 1, то ожидание не может быть прервано с помощью нажатия клавиши.

Пример:

Print "Wait 3 seconds"
Sleep(3000)

 

Timer

Функция возвращает кол-во времени, прошедшее с момента запуска системы. Эту функцию очень часто используют для определения времени выполнения определенных частей кода. Функция не имеет параметров.

Пример:

Var T = Timer
Sleep(3000)
T = Timer - T
Print "Wait= ";T
Sleep

 

Date

Функция получает текущую дату в формате день-месяц-год.

Пример:

Print Date
Sleep

 

Time

Функция возвращает текущее время в формате час : минуты : секунды

Print Time
Sleep

 

SetDate

Устанавливает текущую дату. Ее единственный параметр строка, которая может иметь формат:  день-месяц-год или день/месяц/год

Пример:

Setdate("06-01-2005")

 

SetTime

Устанавливает текущее время. Ее единственный параметр строка, которая может иметь формат: час : минуты : секунды 

Пример:

SetTime("00:00:00")

Не забываем после изменения времени и даты с помощью этих примеров выставить их правильно!

------------------------------------------------------------

Следующие функции взяты из библиотеки VBCOMPAT. Они работают со специфическим форматом , определяющим время. В итоге время и дата помещается в одном числе типа Double. Ниже функции как раз проделывают операции с этим числом: создают такое число или извлекают из него нужные данные. Далее это число я буду называть date_serial  ( так как оно указано в справке)

 

Now

Функция устанавливает date_serial текущего времени и даты в указанную переменную.

Пример:

#INCLUDE "vbcompat.bi"
Dim a As Double = Now()
Print Format(a, "yyyy/mm/dd hh:mm:ss")
Sleep

 

Format

Функция Format преобразовывает из date_serial в строковое значение привычного нам представления. Делает она это в зависимости от форматирующей строки, переданной во втором параметре. Само же date_serial передается в первом параметре.

Форматирующий символ Назначение
d день от 1 до 31 , при том числа от 1 до 9 будут без нуля впереди
dd день от 1 до 31 , при том числа от 1 до 9 будут c нулем впереди
ddd день недели в строковом виде (Пн , Вт . Ср ...)
dddd день недели в полном строковом виде (Понедельник Вторник ...)
ddddd полная дата в виде (03.05.2000)
m месяц от 1 до 12 без нуля впереди
mm месяц от 1 до 12 с нулем впереди
mmm месяц в сокращенном строковом представлении (Сен , Окт)
mmmm месяц в полном строковом представлении (Сентябрь , Октябрь)
y год в виде двухзначного числа (00-99)
yyyy год в виде четырехзначного числа (1900-2040)
h час от 0 до 23 , при том числа от 1 до 9 будут без нуля впереди
hh час от 0 до 23 , при том числа от 1 до 9 будут с нулем впереди
m минуты от 0 до 59 , при том числа от 1 до 9 будут без нуля впереди. Перед символом m должен быть символ h или hh . Если этих символов не будет, то будет отображаться месяц
mm минуты от 0 до 59 , при том числа от 1 до 9 будут с нулем впереди.Перед символом m должен быть символ h или hh . Если этих символов не будет, то будет отображаться месяц
s секунды от 0 до 59 , при том числа от 1 до 9 будут без нуля впереди
ss секунды от 0 до 59 , при том числа от 1 до 9 будут с нулем впереди
ttttt полное время в формате час : миныты : секунды (13:15:24)
AM/PM Добавление этих символов форматирует отображение времени в 12 часовом формате времени. Время будет отображаться в виде (12:32:11 PM)
A/P Добавление этих символов форматирует отображение времени в 12 часовом формате времени. Время будет отображаться в виде (12:32:11 P)

Пример:

#INCLUDE "vbcompat.bi"
Dim a As Double = Now()
Print Format(a, "yyyy/mm/dd hh:mm:ss dddd")
Sleep

 

DateSerial

Создает date_serial даты из указанных трех значений (год,месяц,число)

#INCLUDE "vbcompat.bi"
Dim a As Double = Dateserial(2005, 11, 28)
Print Format(a, "yyyy/mm/dd") 
Sleep

 

DateValue

Создает date_serial даты из строки с тремя значениями (число,месяц,год)

#INCLUDE "vbcompat.bi"
Dim a As Double = Datevalue("25-12-1917")
Print Format(a, "yyyy/mm/dd") 
Sleep

 

TimeSerial

Создает date_serial времени из указанных трех значений (час,минуты,секунды)

#INCLUDE "vbcompat.bi"
Dim a As Double = Timeserial(12, 34, 55)
Print Format(a, "hh:mm:ss") 
Sleep

 

TimeValue

Создает date_serial времени из строки с тремя значениями (час,минуты,секунды)

#INCLUDE "vbcompat.bi"
Dim a As Double = Timevalue("23:40:59")
Print Format(a, "hh:mm:ss") 
Sleep

 

Далее пять функций , работающих абсолютно одинаково. Каждая из них возвращает свое числовое (не строковое) значение из date_serial. И так эти функции:

  • Second - секунды
  • Minute - минуты
  • Hour - часы
  • Day - дни
  • Month - месяцы

Пример:

#INCLUDE "vbcompat.bi"
Dim T As Double = Dateserial(1957, 06, 22) _
+ Timeserial(10, 44, 55)
Print Second(T)
Print Minute(T)
Print Day(T)
Sleep

 

WeekDay

Функция возвращает числовое значение дня недели из date_serial.

Синтаксис:

 WeekDay ( DS , First )

  • DS -  date_serial
  • First - первый установленный вами день недели

Возвращаемое значение функции целое число, которое соответствует дню недели. Они равны соответственно 1-7 = Воскресенье-Суббота

Пример:

#INCLUDE "vbcompat.bi"
Dim D As Double = Dateserial(1999, 01, 22)
Print Weekday(D,2)'ставим первым днем недели понедельник
Sleep


В примере получаем день недели , который соответствовал указанной дате.

 

DatePart

Функция получает интервал значения от даты из date_serial. Возвращаемое значение зависит от четырех установленных ниже параметров.

Синтаксис:

DatePart (Fstring , DS , firstdayofweek , firstdayofyear)

  • Fstring - форматирующая строка
  • DS - date_serial
  • firstdayofweek - первый установленный день недели
  • firstdayofyear - первый день в году

Ниже в таблице форматирующие символы для первого параметра

Значение Интервал
yyyy год
q квартал(три месяца)
m месяц
w день недели
ww неделя в году
y день в году
d день в месяце
h часы
n минуты
s секунды

Пример:

#INCLUDE "vbcompat.bi"
Dim d As Double
 d = Now
Print "Today is day " & Datepart( "y", d );
Print " in week " & Datepart( "ww", d );
Print " of the year " & Datepart( "yyyy", d )
Sleep


Пример показывает какой сейчас по счету день и неделя в году.

 

DateAdd

Функция возвращает дату и время плюс интервал даты и времени. Результат зависит от трех параметров.

Синтаксис:

DateAdd( interval , number , DS)

  • interval - интервал см. таблица ниже
  • number - числовое значение
  • DS - date_serial
значение интервал
yyyy годы
q кварталы(три месяца)
m месяцы
ww недели
d,w,y дни
h часы
n минуты
s секунды

Результат функции суммируемое значение 2 и 3 параметра.

Пример:

#INCLUDE "vbcompat.bi"
Const fmt = "ddddd ttttt"
Dim d As Double
d = Now()
Print "1 hour from now is ";
Print Format( Dateadd( "h", 1, d ), fmt )
Print "1 day from now is ";
Print Format( Dateadd( "d", 1, d ), fmt )
Print "1 week from now is ";
Print Format( Dateadd( "ww", 1, d ), fmt )
Print "1 month from now is ";
Print Format( Dateadd( "m", 1, d ), fmt )
Sleep


Пример выше добавлет к текущему времени 1 час, 1 день, 1 неделю и 1 месяц.

 

DateDiff

Функция возвращает разницу двух date_serial в зависимости от параметров.

Синтаксис:

DateDiff (Interval , DS1 , DS2, firstdayofweek , firstdayofyear)

  • Interval - интервал см. таблицу прошлой функции
  • DS1 , DS2 - первое и второе date_serial
  • firstdayofweek - первый установленный день недели
  • firstdayofyear - первый день года

Пример:

#INCLUDE "vbcompat.bi"
Dim s As String, d1 As Double, d2 As Double
Line Input "Enter your birthday: ", s
If Isdate( s ) Then
  d1 = Datevalue( s )
  d2 = Now()
  Print "You are " & Datediff( "yyyy", d1, d2 ) & " years old."
  Print "You are " & Datediff( "d", d1, d2 ) & " days old."
  Print "You are " & Datediff( "s", d1, d2 ) & " seconds old."
Else
  Print "Invalid date"
End If
Sleep


В данном случае пример вычисляет ваш возраст в годах, днях и секундах, если конечно вы введете правильную дату дня рождения.

 

IsDate

Данная функция проверяет корректность строкового значения даты. Чаще всего требуется для проверки введеных значений даты.

Пример:

#INCLUDE "vbcompat.bi"
Dim s As String, d As Integer
Do
  Print
  Print "Enter a date: "
  Line Input s
  If s = "" Then Exit Do
  If Isdate( s ) = 0 Then
    Print "'"; s; "' is not a valid date"
  Else
    d = Datevalue( s )
    Print "year  = "; Year( d )
    Print "month = "; Month( d )
    Print "day   = "; Day( d )
  End If
Loop


В данном примере предлагается ввести дату. Затем идет проверка с помощью IsDate и если строка является корректной , то выводится год, месяц и день.

 

WeekDayName


Функция получает привычное нам строковое название дня недели из числового значения, возвращенного функцией WeekDay

Пример:

#INCLUDE "vbcompat.bi"
Dim a As Double = Now
Print Weekdayname(Weekday(a))
Sleep

 

MonthName

Функция получает привычное нам строковое название месяца из числового значения, возвращенного функцией Month

#INCLUDE "vbcompat.bi"
Dim a As Double = Now
Print Monthname(Month(a))
Sleep


Собственно это все . Всего доброго!

содержание | назад | вперед