Шаг 289.
Язык программирования C#. Начала.
Немного о разном. Работа с датой и временем
   
На этом шаге мы  перечислим основные свойства и методы структуры, предназначенной для работы с датой и временем.
   
Нередко приходится иметь дело с таким специфическим типом информации, как дата и время. Для работы с датой и временем в языке C# предназначена структура DateTime. 
Экземпляры этой структуры позволяют представлять дату и время в диапазоне от 00:00:00 (ноль часов, ноль минут, ноль секунд) 1 января 1 года новой эры до 23:59:59 (без одной секунды полночь) 
31 декабря 9999 года (даты здесь указаны по григорианскому календарю). Технически дата (и время) реализуется в виде целого числа, равного количеству тактов, которые прошли до данной даты, 
начиная с полночи 1 января 1 года. Длительность одного такта равна 100 наносекундам (или 1 миллисекунда - это 10 000 тактов).
 "Наибольшую" и "наименьшую" дату, которые можно реализовать с помощью экземпляра структуры, можно узнать с помощью статических полей MaxValue и MinValue соответственно. 
Значением полей (доступных только для чтения) являются экземпляры структуры DateTime, соответствующие финальной и начальной датам, которые могут быть реализованы с помощью этой 
структуры.
 
"Наибольшую" и "наименьшую" дату, которые можно реализовать с помощью экземпляра структуры, можно узнать с помощью статических полей MaxValue и MinValue соответственно. 
Значением полей (доступных только для чтения) являются экземпляры структуры DateTime, соответствующие финальной и начальной датам, которые могут быть реализованы с помощью этой 
структуры.
   
Если нас интересует только время (без даты), то в этом случае можно использовать экземпляр структуры TimeSpan.
   
Экземпляр структуры DateTime реализует определенную дату (и время). Существуют разные способы создать экземпляр структуры. Например, аргументами конструктору можно передать год, 
месяц и день для даты, реализуемой экземпляром структуры. Можно дополнительно указать часы, минуты и секунды. Или даже миллисекунды. Предусмотрена возможность явно указывать календарь, 
а также использовать мировое время (вместо местного, используемого по умолчанию). Можно определить дату и время, передав конструктору количество тактов.
 Экземпляр структуры DateTime содержит информацию о годе, месяце, дне в месяце, часах, минутах, секундах и миллисекундах. Здесь и далее под датой мы будем подразумевать совокупность 
всех перечисленных выше параметров.
 
Экземпляр структуры DateTime содержит информацию о годе, месяце, дне в месяце, часах, минутах, секундах и миллисекундах. Здесь и далее под датой мы будем подразумевать совокупность 
всех перечисленных выше параметров.
   
В структуре DateTime есть много свойств и методов. Часто используется статическое свойство Now. Результатом оно возвращает экземпляр структуры, соответствующий текущей 
дате и времени (определяется по текущему времени компьютера). Если нужно получить текущую дату и время по мировому времени (формат UTC), используют свойство UtcNow.
   
У структуры DateTime есть и другие полезные свойства:
 -  значением свойства Today является экземпляр структуры DateTime, реализующий текущую дату (имеется в виду только дата, без времени - время устанавливается нулевое);
  
-  значением свойства Year является целое число, соответствующее году для данной даты;
  
-  значением свойства Month является целое число, определяющее месяц для данной даты;
  
-  значение свойства Day - это целое число, определяющее день в месяце для данной даты;
  
-  значением свойства Hour является целое число, определяющее количество часов для данной даты;
  
-  значением свойства Minute является целое число, определяющее количество минут для данной даты;
  
-  значением свойства Second является целое число, определяющее количество секунд для данной даты;
  
-  свойство Millisecond возвращает целочисленное значение, определяющее миллисекунды для даты;
  
-  свойство Ticks возвращает целое число, равное количеству тактов в данной дате;
  
-  значением свойства DayOfWeek является константа из одноименного перечисления DayOfWeek, определяющая день недели для даты;
  
-  свойство DayOfYear возвращает результатом целое число, определяющее день в году для данной даты;
  
-  значением свойства Kind является константа из перечисления DateTimeKind, определяющая характер времени (местное или мировое).
   
Кроме многочисленных свойств, у структуры DateTime имеется много методов, позволяющих выполнять различные операции с датой и временем. Есть группа методов, предназначенных для 
добавления к дате, реализованной экземпляром структуры DateTime, определенного интервала времени (годы, дни, часы, секунды и так далее):
 -  Методу Add() аргументом передается экземпляр структуры TimeSpan (время в часах, минутах, секундах и миллисекундах). Результатом возвращается новый экземпляр структуры DateTime, который описывает результат добавления данного временного интервала к исходной дате.
  
-  Метод AddDays() позволяет добавить к дате дни (double-аргумент метода). Результат - экземпляр структуры DateTime.
  
-  Метод AddHours() используется для добавления к дате часов (double-аргумент метода), результатом возвращается экземпляр структуры DateTime.
  
-  Метод AddMilliseconds() аргументом получает double-значение, определяющее количество миллисекунд, добавляемых к дате. Результатом возвращается экземпляр структуры DateTime, соответствующий новой дате.
  
-  Метод AddMinutes() позволяет вычислить новую дату (экземпляр структуры DateTime), получающуюся прибавлением к исходной дате определенного количества минут (double-аргумент метода).
  
-  Метод AddMonths() аргументом получает количество месяцев, прибавляемых к дате (целое число). Результатом является экземпляр структуры DateTime с новой датой.
  
-  Методу AddSeconds() передается double-значение, определяющее количество добавляемых к дате секунд. Результатом возвращается экземпляр структуры DateTime с новой датой.
  
-  Метод AddTicks() позволяет добавить к дате указанное количество тактов (целочисленный аргумент метода). Результатом возвращается экземпляр структуры DateTime с новой датой.
  
-  Метод AddYears() позволяет добавить к дате определенное количество лет (целочисленный аргумент метода). Результатом является экземпляр структуры DateTime с новой датой.
  
-  Метод DaysInMonth() аргументами получает два целочисленных значения (год и месяц в году), а результатом возвращает количество дней в месяце.
  
-  Метод GetDateTimeFormats() может вызываться с разными аргументами (в том числе и без них), а результатом является текстовый массив с поддерживаемыми форматами для текстовых представлений даты.
  
-  Метод IsDaylightSavingTime() позволяет проверить, попадает ли данная дата в диапазон летнего времени (для текущего часового пояса).
  
-  Статический метод IsLeapYear() используется для проверки того, является ли год високосным. Год в виде целого числа передается аргументом методу.
  
-  Аргументом методу Subtract() передается экземпляр структуры DateTime (дата) или TimeSpan (время). Из исходной даты вычитается дата/время, переданные аргументом методу Результатом возвращается экземпляр структуры TimeSpan и DateTime соответственно.
  
-  Для перевода даты в местное время используют метод ToLocalTime().
  
-  Для получения текстового представления даты используют метод ToString(). Метод может вызываться без аргументов (в том числе при автоматическом преобразовании типов) или с передачей аргументов, определяющих формат текстового представления.
  
-  Для перевода даты в мировое время UTC используют метод ToUniversalTime().
  
-  Для сравнения дат используют методы Compare(), CompareTo() и Equals().
 К экземплярам структуры DateTime применяются операторы сравнения, а также сложение (к экземпляру структуры DateTime можно прибавлять экземпляр структуры TimeSpan) и вычитание (из экземпляра структуры 
DateTime можно вычитать экземпляр структуры DateTime или TimeSpan).
 
К экземплярам структуры DateTime применяются операторы сравнения, а также сложение (к экземпляру структуры DateTime можно прибавлять экземпляр структуры TimeSpan) и вычитание (из экземпляра структуры 
DateTime можно вычитать экземпляр структуры DateTime или TimeSpan).
   
На следующем шаге мы рассмотрим пример использования этой структуры.
Предыдущий шаг  Содержание
 
Содержание  Следующий шаг
 
Следующий шаг