Свойства и методы структуры DateTime
Чтобы понять, что от типа DateTime есть какая-то польза, решим пару задач.
Задача 1. 29 мая 2004 года мне выдали задание и сказали, чтобы я уложился в 50 дней. Какого числа наступит крайний срок сдачи задания?
Программа:
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
Dim Сегодня, Крайний_срок As DateTime
Сегодня = #5/29/2004#
Крайний_срок = Сегодня.AddDays(50)
MsgBox(Крайний_срок)
End Sub
В окне MsgBox мы видим результат: 18.07.2004. То есть 18 июля 2004 года – крайний срок сдачи задания. Здесь я использовал метод AddDays(«Добавить дни») структуры DateTime.
Ту же самую программу можно записать короче:
Dim Сегодня As DateTime = #5/29/2004#
MsgBox(Сегодня.AddDays(50))
И еще короче:
MsgBox(#5/29/2004#.AddDays(50))
Задача 2. В отпуск вы отправляетесь 1 июля 2005 года. Какой это день недели?
Программа:
Dim Начало_отпуска As DateTime = #7/1/2005#
MsgBox(Начало_отпуска.DayOfWeek)
Здесь я использовал метод DayOfWeek(«День недели») структуры DateTime. В окне MsgBox мы видим результат: 5. Это пятый день недели – пятница. Кстати, воскресенье в VB – не 7-й день, а нулевой. Это потому, что у американцев неделя начинается с воскресенья, а не с понедельника, как у нас.
Перечень свойств и методов структуры DateTime. Не всех, но популярных. С пояснениями.
Пусть мы задали переменную:
Dim D As DateTime = #2/14/2005 11:41:39 PM#
Ее значение мы будем использовать в этом подразделе, как исходный материал.
Оператор
Debug.WriteLine(D.Date)
напечатает значение
14.02.2005 0:00:00
Мы видим, что свойство Dateвозвращает значение переменной с обнуленной составляющей времени суток, оставив только дату. Тип значения – Date. Заносим вышесказанное в таблицу:
Свойство или метод | Значение | Тип значения | Пояснения |
Date | 14.02.2005 0:00:00 | Date | Функция обнуляет в значении переменной составляющую времени суток, оставив только дату |
Продолжаем нашу таблицу. Несколько свойств возвращают ту или иную составляющую структуры DateTime:
Year | Integer | Выделяет из значения типа DateTime число типа Integer, равное году | |
Month | Integer | Аналогично выделяет месяц | |
Day | Integer | Аналогично выделяет день | |
Hour | Integer | Аналогично выделяет час | |
Minute | Integer | Аналогично выделяет минуту | |
Second | Integer | Аналогично выделяет секунду | |
DayOfYear | Integer | Определяет порядковый номер дня в году | |
DayOfWeek | Monday | Перечисление DayOfWeek | Определяет день недели. Тип значения – перечисление DayOfWeek из 7 дней недели (0 - 6) |
Методы, начинающиеся на Add, увеличивают или уменьшают ту или иную составляющую значения. Например:
AddYears(3) | 14.02.2008 23:41:39 | Date | Увеличивает дату на заданное число годов |
AddSeconds(5) | 14.02.2005 23:41:44 | Date | Увеличивает время на заданное число секунд |
AddSeconds(80) | 14.02.2005 23:42:59 | ||
AddSeconds(-4) | 14.02.2005 23:41:35 | Уменьшает время на 4 секунды |
Аналогичные методы есть для дней, минут и других составляющих даты.
Структура DateTime включает в себя и дробные доли секунды. Минимальной единицей измерения времени в структуре DateTime является тик, равный 0.0000001 сек. Мы можем добавлять тики к значению типа DateTime:
AddTicks(100000000) | 14.02.2005 23:41:49 | Date | Добавить сто миллионов тиков – все равно, что добавить 10 секунд |
Ticks | Long | Сколько тиков прошло с начала новой эры до данной даты |
При помощи последних метода и свойства можно, в принципе, заменить действия над данными типа DateTime действиями над целыми числами, иногда превращая их в даты и время суток. Однако, удобнее это делать с помощью специальных функций, которые мы и рассматриваем.
Следующие два метода преобразуют время между вашим часовым поясом и поясом Гринвичского меридиана у Лондона (так называемое время GMT или UTC). Правильно преобразуют они только в том случае, если ваш компьютер правильно настроен на ваш часовой пояс.
ToUniversalTime | 14.02.2005 20:41:39 | DateTime | Если вы имеете в виду, что в переменной D задано время вашего пояса, то эта функция показывает время GMT. |
ToLocalTime | 15.02.2005 2:41:39 | DateTime | Наоборот: Если вы имеете в виду, что в переменной D задано время GMT, то эта функция показывает, сколько время в этот момент было в вашем поясе |
Следующие методы преобразуют значение из типа DateTime в тип String. После этого его удобно просматривать и к нему можно применять методы работы со строками.
ToString | 14.02.2005 23:41:39 | String | Просто преобразование без изменений |
ToLongDateString | 14 Февраль 2005 г. | String | Выделяется дата |
ToShortDateString | 14.02.2005 | String | Выделяется дата |
ToLongTimeString | 23:41:39 | String | Выделяется время |
ToShortTimeString | 23:41 | String | Выделяется время |
Следующие методы и свойства принадлежат структуре DateTime и для их использования не нужно создавать переменную типа DateTime. То есть, можно писать, например, просто
Debug.WriteLine(DateTime.Now)