Шаг 28 - Работа с Датами

Для работы с датой в VBA предусмотрен специальный тип Date. Этот тип занимает 8 байт. Оно вам надо ? Это так для информации :-). Пробуем.

Sub Test()
	Dim MyDate As Date
	MsgBox (Str(Year(MyDate)))
End Sub

У меня выдает 1899 год. Это говорит, что при создании этой переменной она не инициализируется текущей датой. Это плохо. Поместить Дату и время можно из строки воспользовавшись функциями DateValue и TimeValue.

Sub Test()
	Dim MyDate As Date
	MyDate = DateValue("1/1/96")
	Debug.Print Year(MyDate)
End Sub

Так же и со временем:

Sub Test()
	Dim MyDate As Date
	MyDate = TimeValue("10:10:12")
	MsgBox Str(Minute(MyDate))
End Sub

Только одновременно хранить и время и дату так не удастся, вот этот код приведет к очень интересному результату.

Sub Test()
	Dim MyDate As Date
	MyDate = DateValue("6/1/72")
	MsgBox Str(Year(MyDate))
	MyDate = TimeValue("10:10:12")
	MsgBox Str(Minute(MyDate))
	MsgBox Str(Year(MyDate))
End Sub

Если вы хотите хранить вместе и дату и время, то поступите так:

Sub Test()
	Dim MyDate As Date
	MyDate = DateValue("6/1/72") + TimeValue("10:10:12")
	MsgBox Str(Minute(MyDate))
	MsgBox Str(Year(MyDate))
End Sub

Чтобы извлекать части даты и часов используйте такие функции:

Month(переменная типа Date)
Day(переменная типа Date)
Year(переменная типа Date)
Hour(переменная типа Date)
Minute(переменная типа Date)
Second(переменная типа Date)
WeekDay(переменная типа Date)

WeekDay - это день недели, если Вам это нужно, то вы можете написать что-то типа этого.

Sub Test()
	Dim MyDate As Date
	MyDate = DateValue("9/1/72")
	If (WeekDay(MyDate) = vbSunday) Then
		MsgBox ("Sunday")
End Sub

vbSunday это константа, есть еще vbMonday, ну дальше понятно.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 26.12.99