Для работы с датой и временем язык C# предусматривает структуру
DateTime, описанную в пространстве имен
System.
Свойства структуры DateTime
Структура
DateTime содержит следующие свойства:
- Date – собственно структура типа DateTime;
- DayOfWeek – день недели – является членом перечисления DayOfWeek:
- Monday – понедельник,
- Tuesday – вторник,
- Wednesday – среда,
- Thursday – четверг,
- Friday – пятница,
- Saturday – суббота,
- Sunday – воскресенье.
- DayOfYear – целочисленное значение дня заданного года от 1 до 366.
- Hour – количество часов заданного дня от 0 до 23;
- Kind – представляет собой значение, указывающее, какое время указано текущим экземпляром структуры DateTime, является членом перечисления Kind:
- Local – местное время
- Utc – время представлено стандартом UTC.
- Unspecified – время не определено ни как местное, ни как UTC.
- Millisecond – количество миллисекунд заданной даты от 0 до 999.
- Minute – количество минут заданной даты от 0 до 59.
- Month – значение месяца заданной даты от 1 до 12.
- Second – количество секунд заданной даты от 0 до 59.
- Year – год заданной даты от 0001 до 9999.
- TimeOfDay – время дня для заданной даты (с точностью до 100 наносекунд).
- Ticks – число 100-наносекундных тактов в формате Int64 начиная с 00:00:00 1 января 0001 года.
Кроме того, структура
DateTime содержит статические свойства и поля:
- Now – представляет собой свойство DateTime, содержащее текущую дату и время данного компьютера в формате местного времени.
- UtcNow - представляет собой свойство DateTime, содержащее текущую дату и время данного компьютера в формате UTC.
- Today – представляет собой текущую дату.
- MinValue – наименьшее значение типа DateTime.
- MaxValue – наибольшее значение типа DateTime.
- IsLeapYear(Int32 year) – возвращает логическое значение true если переданный год является високосным и false в противном случае.
- DaysInMonth(Int32 year, Int32 month) – возвращает количество дней в указанном месяце указанного года.
Конструкторы структуры DateTime
Структура
DateTime содержит ряд конструкторов, позволяющих инициализировать объект. Наиболее часто используемые из них:
- Указанной датой - DateTime(год, месяц, день);
- Указанной датой и временем – DateTime(год, месяц, день, часы, минуты, секунды);
- Указанным 64-разрядным количеством Ticks – DateTime(Ticks).
Рассмотрим пример инициализации даты и получения ее отдельных свойств.
При попытке инициализации объекта
DateTime недопустимыми значениями возникает исключение:
Ввод данных структуры DateTime
Для ввода даты и времени чаще всего используются статические методы
Parse() и
TryParse() структуры
DateTime.
Метод
Parse() в качестве аргумента принимает строку в одном из допустимых форматов для преобразования ее к объекту
DateTime, который является возвращаемым значением функции. Если строку не удается корректно преобразовать в объект
DateTime, возникает исключение.
Метод
TryParse() принимает в качестве аргументов строку, которую необходимо преобразовать к объекту типа
DateTime, а также переменную типа
DateTime, обозначенную ключевым словом
out, в которую необходимо сохранить преобразованную строку. Метод
TryParse() является защищенным, и в случае невозможности корректного преобразования строки к формату
DateTime, возвращает значение, равное
0, что соответствует дате
DateTime.MiValue.
Для того чтобы узнать поддерживаемые системой форматы ввода даты и времени можно воспользоваться методом
GetDateTimeFormats(), который преобразует значение объекта
DateTime во все строковые представления, поддерживаемые стандартным форматом даты и времени.
Вывод данных структуры DateTime
Особого внимания заслуживает возможность форматированного вывода даты и времени. Для этого чаще всего используется перегруженный метод
ToString() класса
Object, который в качестве аргумента может принимать строку формата для вывода даты и времени.
Обозначение | Назначение | Варианты использования |
y |
год |
y yy yyyy |
M |
месяц |
M MM MMM MMMM |
d |
день |
d dd ddd dddd |
h H |
час (12-часовой) час(24-часовой) |
h hh H HH |
m |
минута |
m mm |
s |
секунда |
s ss |
f |
тик |
f ff fff ffff fffff ffffff fffffff |
z |
временная зона |
z zz zzz |
Изменение данных структуры DateTime
Для изменения даты и времени относительно указанного значения можно воспользоваться следующими методами. Все эти методы возвращают новый объект
DateTime и в качестве аргумента могут принимать как положительное, так и отрицательное значение.
- AddDays(Double) - добавляет заданное число дней (полных и неполных) к указанному значению.
- AddMonths(Int32) - добавляет заданное число месяцев к указанному значению.
- AddYears(Int32) - добавляет заданное число лет к указанному значению.
- AddHours(Double) - добавляет заданное число часов (полных и неполных) к указанному значению.
- AddMinutes(Double) - добавляет заданное число минут (полных и неполных) к указанному значению.
- AddSeconds(Double) - добавляет заданное число секунд (полных и неполных) к указанному значению.
- AddMilliseconds(Double) - добавляет заданное число миллисекунд (полных и неполных) к указанному значению.
- AddTicks(Int64) - добавляет заданное число 100-наносекундных тиков к указанному значению.
- Add(TimeSpan) - добавляет значение TimeSpan к указанному значению DateTime. Структура TimeSpan используется для представления интервала времени, которая может быть проинициализирована следующим образом:
- TimeSpan(часы, минуты, секунды)
- TimeSpan(дни, часы, минуты, секунды)
- TimeSpan(дни, часы, минуты, секунды, миллисекунды)
- TimeSpan(тики)
В примере ниже вторая строка выводится через 5 секунд после первой.
Кроме того, для изменения данных могут использоваться перегруженные операторы
- + - складывает значение объекта DateTime и временной интервал TimeSpan;
- - – вычитает значение объекта DateTime или TimeSpan из значения объекта DateTime.
Потренироваться в использовании функций работы с датой и временем Вы можете, решая задачи