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

         

Форматирование даты и времени


В 5.4.7 вы уже сталкивались с форматированием чисел. Форматирование нужно для того, чтобы представить информацию в удобном для пользователя виде. Осуществляет форматирование функция Format. У нее два аргумента (параметра): первый – что форматировать, второй – как форматировать. Функция возвращает значение типа String.

Готовые форматы. Рассмотрим программу:

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

        Dim t As DateTime = #8/10/2004 4:42:39 PM#

        WriteLine(Format(t, "General Date"))    '10.08.2004 16:42:39

        WriteLine(Format(t, "Long Date"))          '10 Август 2004 г.

        WriteLine(Format(t, "Short Date"))          '10.08.2004

        WriteLine(Format(t, "Long Time"))          '16:42:39

        WriteLine(Format(t, "Short Time"))         '16:42

        WriteLine(Format(t, "f"))                          '10 Август 2004 г. 16:42

        WriteLine(Format(t, "F"))                         '10 Август 2004 г. 16:42:39

        WriteLine(Format(t, "g"))                         '10.08.2004 16:42

        WriteLine(Format(t, "y"))                               'Август 2004 г.



End Sub

Пояснения: Здесь первый аргумент – t. Второй – строка. Содержание строки определяет вид результата. То, что печатают операторы программы, написано в комментариях.

Форматы, определяемые программистом. Мы рассмотрели здесь наиболее популярные из готовых форматов, которые нам предоставляет VB. Но форматы можно конструировать и самому. Рассмотрим программу:

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        Dim t As DateTime = #8/5/2004 7:02:09 PM#

        WriteLine(Format(t, "fff"))                        '000      - доли секунды (тысячные, потому что 3 буквы f)

        WriteLine(Format(t, "%s"))                            '9          - секунды


        WriteLine(Format(t, "ss"))                             '09        - секунды
        WriteLine(Format(t, "%m"))                     '2          - минуты
        WriteLine(Format(t, "mm"))                     '02        - минуты
        WriteLine(Format(t, "%h"))                            '7          - часы до и после полудня
        WriteLine(Format(t, "hh"))                             '07        - часы до и после полудня
        WriteLine(Format(t, "%H"))                            '19        - часы
        WriteLine(Format(#3:02:09 AM#, "HH"))       '03        - часы
        WriteLine(Format(t, "%d"))                            '5          - число месяца
        WriteLine(Format(t, "dd"))                             '05        - число месяца
        WriteLine(Format(t, "ddd"))                           'Чт        - день недели
        WriteLine(Format(t, "dddd"))                   'четверг - день недели
        WriteLine(Format(t, "%M"))                           '8          - месяц
        WriteLine(Format(t, "MM"))                            '08        - месяц
        WriteLine(Format(t, "MMM"))                   'авг       - месяц
        WriteLine(Format(t, "MMMM"))                      'Август - месяц
        WriteLine(Format(t, "%y"))                            '4          - год
        WriteLine(Format(t, "yy"))                             '04        - год
        WriteLine(Format(t, "yyyy"))                   '2004    - год
End Sub
Пояснения: В комментариях вы видите результаты работы операторов программы с пояснениями. Знак процента употребляется тогда, когда в кавычках стоит один единственный символ форматирования, чтобы не спутать его с символом готового формата.
Мы рассмотрели здесь, как выделять из переменной нужные нам элементарные части даты или времени. Теперь посмотрим, как их комбинировать, чтобы получить вразумительную строку:


Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        Dim t As DateTime = #8/5/2004 7:02:09 PM#
        WriteLine(Format(t, "dd-MM-yy"))                                           '05-08-04
        WriteLine(Format(t, "d MMM yyyy"))                                       '5 авг 2004
        WriteLine(Format(t, "Настал yyyy год."))                               'Настал 2004 год.
        WriteLine(Format(t, "d/MM/yy"))                                             '5.08.04
        WriteLine(Format(t, "HH:m:ss"))                                             '19:2:09
        WriteLine(Format(t, "HH,m.ss"))                                             '19,2.09
        WriteLine(Format(t, "HH часов d MMM"))                               '19 часов 5 авг
        WriteLine(Format(t, "Было %h часов вечера и m минуты"))  'Было 7 часов вечера и 2 минуты
    End Sub
Пояснения: Если мы при разделении элементов даты пользуемся косой чертой, то в результате разделителем становится символ, на который настроена Windows (в России – точка, в США – косая черта). То же самое можно сказать о двоеточии для разделения элементов времени суток. Но мы можем для разделения сравнительно свободно пользоваться и другими символами: черточками, пробелами, точками, запятыми, буквами русского алфавита и др.
Задание 76.    
Напишите программу, которая, ничего у вас не спрашивая, печатает, какое число будет через 52 недели.
Задание 77.          
Напишите программу, которая, спросив у вас дату рождения и не спрашивая, какое сегодня число, печатает, сколько секунд вы живете на белом свете.
Задание 78.          
Напишите программу, которая, спросив у вас дату рождения и не спрашивая, какое сегодня число и был ли у вас в этом году день рождения, печатает, сколько дней вам осталось до следующего дня рождения.
Задание 79.          
Я знаю, что високосных годов ученым не хватает. Поэтому, не то где-то раз в много лет вклинивается лишний високосный год, не то иногда где-то в каком-то месяце бывает лишний день. Не знаю. Может быть VB подскажет?

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