Тик так ходики...
Эта статья , как вы догадались расскажет про функции, команды , работающие со временем. Сначала я рассмотрю встроенные команды, а потом заимствованные из языка 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
Собственно это все . Всего доброго!
содержание | назад | вперед