Структура DateTime представляет текущее время, обычно выраженное как дата и время суток.
Тип значения DateTime представляет дату и время в диапазоне от 00:00:00 1 января 0001 года (н. э.) и до 23:59:59 31 декабря 9999 года (н. э.)
DateTime.Now — возвращает объект System.DateTime , которому присвоены текущие дата и время суток данного компьютера.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
static void Main() { DateTime now = DateTime.Now; Console.WriteLine("Текущая дата и время : {0}", now); Console.WriteLine("Год: {0}", now.Year); Console.WriteLine("Месяц: {0}", now.Month); Console.WriteLine("День месяца: {0}", now.Day); Console.WriteLine("Текущее время - {0}:{1}:{2}", now.Hour, now.Minute, now.Second); Console.WriteLine("День недели : {0}", now.DayOfWeek); Console.WriteLine("Это {0}-й день года", now.DayOfYear); //Получаем дату текущего компьютера и значение времени, равное полуночи (00:00:00). Console.WriteLine(DateTime.Now.Date); // Задержка. Console.ReadKey(); } |
DateTime представляет момент(значение) времени, тогда как TimeSpan представляет интервал(промежуток) времени. Это означает, что можно вычесть один экземпляр DateTime из другого для получения объекта TimeSpan, который представляет собой временной интервал между ними. Или можно прибавить положительное значение TimeSpan к текущему значению DateTime, чтобы получить значение DateTime, которое представляет собой будущую дату.
Следующий код нам покажет сколько дней осталось до нового года и сколько часов.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
static void Main() { // Создание Новой даты. DateTime(гг, мм, дд) DateTime newYearDate = new DateTime(2019, 1, 1); DateTime today = DateTime.Now; // Представляет интервал времени. TimeSpan left = newYearDate - today; Console.WriteLine("До нового года осталось " + left.Days + " дней"); Console.WriteLine("До нового года осталось " + left.TotalHours + " часов"); // Создание Новой даты и времени. DateTime(гг, мм, дд, чч, мин, сек) DateTime newDate = new DateTime(2012, 12, 05, 23, 11, 11); Console.WriteLine(newDate); // Вывод значения даты и времени на экран Console.WriteLine(newDate.TimeOfDay); // Вывод значение времени, установленного // пользователем на экран // Преобразует заданное строковое представление даты и времени в его эквивалент Console.WriteLine(DateTime.Parse("1/12/2018")); Console.WriteLine(DateTime.Parse("05 march 2018")); // Месяц написать на локальном языке OS. // Задержка. Console.ReadKey(); } |
Рассмотрим еще один пример вывода даты в консоль:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
static void Main() { DateTime now = DateTime.Now; Console.WriteLine("Дата месяц(прописью) год : {0:D}", now); Console.WriteLine("Дата.месяц.год : {0:d}", now); Console.WriteLine("Дата месяц(прописью) год время(чч:мм:сс) : {0:F}", now); Console.WriteLine("Дата месяц(прописью) год время(чч:мм) : {0:f}", now); Console.WriteLine("Дата.месяц.год время(чч:мм:cc) : {0:G}", now); Console.WriteLine("Дата.месяц.год время(чч:мм) : {0:g}", now); Console.WriteLine("Текущий месяц и дата : {0:M}", now); Console.WriteLine("Текущий месяц и год : {0:Y}", now); Console.WriteLine("Время(чч:мм:cc) : {0:T}", now); Console.WriteLine("Время(чч:мм) : {0:t}", now); // Delay. Console.ReadKey(); } |
Следующий пример позволяет обработать ввод пользователя в формате 19.03.2018. Однако если пользователь ничего не введет то время будет заданно по умолчанию, которое установлено в системе.
1 2 3 |
Console.Write("Введите дату:"); d = Console.ReadLine(); DateTime date = string.IsNullOrEmpty(d) ? DateTime.Now : DateTime.Parse(d); |
Хотелось бы еще затронуть одну не мало важную деталь. Иногда разработчики использующие класс DataTime требуют ввести в метод какой то интервал времени. И за частую не понятно о каком именно интервале упоминает программист, это может быть год, месяц или день. В классических приложениях интервал исчисляется в миллисекундах, однако так бывает не всегда.
1 |
void WorkThread(int timeout) { ... } |
Как видите не совсем понятно, какое число требуется передать в метод. И тут на помощь к нам приходить структура TimeSpan.
1 |
void WorkThread(TimeSpan timeout) { ... } |
1 |
void WorlThread (new TimeSpan(0, 0, 0, 0, 50)); |
Теперь с правильным синтаксисом мы знаем, что в метод передаются миллисекунды, и ошибки в переданном аргументе сведены к нулю.
Пример: как получить текущее дату и время C#
1 |
string date = DateTime.Now.ToString("dd MMMM yyyy | HH:mm:ss"); //22 января 2019 17:33:20 |