Как узнать текущее время в C#

Доброго времени суток! Эта статья будет короткой, но тем не менее, вопрос которому она посвящена достаточно часто встречается у начинающих программистов. А расскажу я в этой статье как можно узнать (получить) текущее время в программе, написанной на C#. Ну а чтобы эта статья не была уж очень короткой,  я немного затрону и вопрос форматирования даты/времени при выводе пользователю (отображении). А теперь приступим к делу. Ниже приведен код консольной программы, которая получает текущие дату и время и выводит их в консоль. Посмотрев на этот код Вы поймете, насколько это просто…

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace GetTime
{
    class Program
    {
        static void Main(string[] args)
        {
            //Текущие дата/время хранятся в свойстве Now класса DateTime

            Console.WriteLine(DateTime.Now); //Получаем текущие дату и время, выводим их в консоль
            //Чтобы программа сразу же не закрылась
            Console.ReadKey();
        }
    }
}

Как можно было заметить из приведенного выше примера, текущие дата и время возвращаются статическим свойством «Now» класса «DateTime», соответственно для получения текущих даты и времени в нужном месте программы мы просто вставили «DateTime.Now». Причем в нашем случае, мы сразу же и вывели в консоль полученную информацию.

Свойство «Now» класса «DateTime» возвращает объект типа «DateTime», а при выводе в консоль, автоматически вызвался метод «ToString» данного класса.

То что метод «ToString» в нашем случае вызывается автоматически довольно удобно, если бы не одно но… В таком случае, мы получаем отформатированные по умолчанию вывод даты и времени. Если запустить программу на моем ПК, то получится примерно следующее:

get_current_time_article_1

Результат вывода отформатированной по умолчанию даты (и времени)

Т.е. мы увидели на экране текущие и дату и время, причем в жестко определенном формате (и в каком именно, решали не мы)… А если нужно вывести только время (без даты)? Или указать не номер месяца, а его название? К счастью, при разработке в C# продумали эти варианты. Метод «ToString» класса «DateTime» имеет несколько вариантов перегрузки. И один из них мы как раз и будем использовать, чтобы получить нужный нам результат. Смотрите пример кода, приведенный ниже:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace GetTime
{
    class Program
    {
        static void Main(string[] args)
        {
            //Текущие дата/время хранятся в свойстве Now класса DateTime

            Console.WriteLine(DateTime.Now.ToString("HH:mm:ss")); //Выводим только время

            Console.WriteLine(DateTime.Now.ToString("dd MMMM yyyy")); //Выводим дату, выводится название месяца а не его номер

            //Чтобы программа сразу же не закрылась
            Console.ReadKey();
        }
    }
}

В примере мы сначала выводим исключительно время (для этого в качестве параметра метода «ToString» передаем строку «HH:mm:ss»), а потом выводим дату (передав строку «dd MMMM yyyy») в тот же метод. В результате получим следующий вывод в консоль:

get_current_time_article_2

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

Строки, которые мы указывали в качестве параметра метода «ToString» представляют собой формат вывода (нужный нам). Давайте для примера разберем строку значение формата «HH:mm:ss»:

  • «HH» означает что в этом месте нужно вывести часы в 24-часовом формате;
  • «:» просто разделить (тут может быть и другой символ, например, пробел или слэш…);
  • «mm» означает что в этом месте нужно вывести минуты ( в формате «00»-«59»);
  • «ss» означает что в этом месте нужно вывести секунды (в формате «00»-«59»).

Подробнее о форматированном выводе (преобразовании в строку) я расскажу в отдельной статье, а сейчас напомню, чтобы получить (узнать) текущие дату и время в своей программе, просто вставьте в нужно место «DateTime.Now». Например так:

//Получим текущее время (и дату) и сохраним её в переменную nowTime
DateTime nowTime = DateTime.Now; 

На сегодня всё…

Добавить комментарий