ПОНЯТНО О Visual Basic NET (том 2)

         

Переменные и литералы типа DateTime


Когда вы пишете в окне кода программу, в ней встречаются литералы: числа, строки, а теперь вы должны научиться писать в программе литерал даты и времени суток. Чтобы VB понял, что перед ним число, вы просто пишете цифры, и он понимает. Чтобы VB понял, что перед ним строка, вы пишете ряд букв и берете его в двойные кавычки, и VB понимает, что это строка. Чтобы VB понял, что перед ним дата или время суток, вы правильно записываете дату и время и заключаете их между значками #, и он понимает, что это литерал типа DateTime. Вот пример правильной записи:  #2/16/2002#.  Перед вами не что иное, как 16 февраля 2002 года. Как правильно записывать дату и время в других случаях, вы поймете из других примеров:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Debug.WriteLine(#6/25/2001#)                          '25 июня 2001 года

        Debug.WriteLine(#2:22:57 PM#)                        '2 часа 22 минуты 57 секунд после полудня (PM)

        Debug.WriteLine(#2/28/1998 10:45:00 PM#)    '10 часов 45 минут вечера 28 февраля 1998 года

        Dim D, T, DT As DateTime

        D = #12/25/2044#

        T = #2:00:32 AM#                                              '2 часа 00 минут 32 секунды до полудня (AM)

        DT = #1/15/2156 11:59:42 PM#

        Debug.WriteLine(D)

        Debug.WriteLine(T)

        Debug.WriteLine(DT)

End Sub



Эта процедура напечатает такие результаты:

25.06.2001 0:00:00

01.01.0001 14:22:57

28.02.1998 22:45:00

25.12.2044 0:00:00

01.01.0001 2:00:32

15.01.2156 23:59:42

Пояснения: Как видите, в окне кода мы обязаны писать дату и время по-американски, то есть месяц писать раньше числа и разделять все это косыми чертами, а в обозначении времени суток VB заставляет вас указывать, до или после полудня было дело. А вот результаты по этим непривычным данным печатаются все равно по-нашему, вернее, так, как настроена Windows (а у большинства она настроена на Россию).

Вы можете задавать переменную типа DateTime и в виде строки.


D = "5/6/2003  10:45:12 PM"
В этом случае, если дата и время в строке записаны правильно, VB автоматически преобразует строку в тип DateTime. А вот если вы захотите задавать дату или время при помощи оператора
D = InputBox("Введите дату")
или из текстового поля, то вводить их по-американски нельзя и значки # тоже нельзя ставить.
Переменная типа DateTime включает в себя всегда и дату, и время суток. Но при задании значения такой переменной вы не обязаны задавать и то и другое одновременно. Если вы не задали время суток, то, как видите из результатов, считается, что временем суток данной переменной является 0:00:00, то есть полночь – начальный момент суток. Если вы не задали дату, то считается, что датой в данной переменной является 01.01.0001, то есть первый день нашей эры.
Что делать, если я хочу в результатах видеть только дату, а не время, или наоборот – только время, а не дату? Об этом чуть позже.
Кроме типа DateTime со временем в VB имеет дело тип TimeSpan. Его сфера компетенции – не столько конкретные даты и моменты времени, сколько протяженность промежутков времени. Мы не будем его рассматривать.

Содержание раздела