На внутреннем уровне все значения DateTime представлены как количество интервалов (1 интервалов = 100 нс), которое прошло с 00:00:00 1 января 0001 года. Фактическое значение DateTime не зависит от способа отображения значения, когда оно отображается в элементе пользовательского интерфейса или записывается в файл. Внешний вид значения DateTime — это результат операции форматирования. Форматирование — это процесс преобразования значения в его строковое представление.
Так как внешний вид значений даты и времени зависит от таких факторов, как язык и региональные параметры, международные стандарты, программные требования и личные предпочтения, структура DateTime обеспечивает большую гибкость при форматировании значений даты и времени с помощью перегруженных версий метода ToString. Метод DateTime..::.ToString()()() по умолчанию возвращает строковое представление значений даты и времени, используя формат краткой записи даты и длинной записи времени, предусмотренный в языке и региональных параметрах. В следующем примере используется метод DateTime..::.ToString()()() по умолчанию, чтобы отобразить дату и время, используя краткий формат даты и длинный формат времени для языка и региональных параметров en-US, которые являются текущими региональными параметрами на компьютере, где выполняется пример.
DateTime date1 = new DateTime(2008, 3, 1, 7, 0, 0);
Console.WriteLine(date1.ToString());
// For en-US culture, displays 3/1/2008 7:00:00 AM
Метод DateTime..::.ToString(IFormatProvider) возвращает строковое представление значения даты и времени, используя краткий формат даты и длинный формат времени определенного языка и региональных параметров.
В примере используется метод DateTime..::.ToString(IFormatProvider), чтобы отобразить дату и время, используя краткий формат даты и длинный формат времени для языка и региональных параметров fr-FR.
|
DateTime date1 = new DateTime(2008, 3, 1, 7, 0, 0);
Console.WriteLine(date1.ToString(CultureInfo.CreateSpecificCulture("fr-FR")));
// Displays 01/03/2008 07:00:00
Метод DateTime..::.ToString(String) возвращает строковое представление даты и времени в формате, который определяется стандартным или настраиваемым описателем формата; при этом используются правила форматирования, которые зависят от текущих региональных параметров и языка.
В примере используется метод DateTime..::.ToString(String), чтобы отобразить полный формат даты и времени для языка и региональных параметров en-US, которые являются текущими региональными параметрами на компьютере, где выполняется пример.
DateTime date1 = new DateTime(2008, 3, 1, 7, 0, 0);
Console.WriteLine(date1.ToString("F"));
// Displays Saturday, March 01, 2008 7:00:00 AM
Метод DateTime..::.ToString(String, IFormatProvider) возвращает строковое представление даты и времени в формате, который определяется определенным описателем формата; при этом используются правила форматирования, которые зависят от заданных региональных параметров и языка.
В примере используется метод DateTime..::.ToString(String, IFormatProvider), чтобы отобразить дату и время в полном формате для языка и региональных параметров fr-FR.
DateTime date1 = new DateTime(2008, 3, 1, 7, 0, 0);
Console.WriteLine(date1.ToString("F", new CultureInfo("fr-FR")));
// Displays samedi 1 mars 2008 07:00:00
Начиная с версии 2.0 платформы.NET Framework структура DateTime содержит 64-битовое поле, состоящее из закрытого поля Kind, сцепленного с полем Ticks. Поле Kind является 2-битовым полем, указывающим, какое время представляет структура DateTime: местное, скоординированное всеобщее (UTC) или время в незаданном часовом поясе. Поле Kind используется при выполнении преобразования значения времени между часовыми поясами, но не для сравнения значений времени или выполнения над ними арифметических операций. Значение поля Kind можно получить из свойства Kind.
|
В следующем примере кода метод SpecifyKind используется для демонстрации влияния свойства Kind на методы преобразования ToLocalTime и ToUniversalTime.
// This code example demonstrates the DateTime Kind, Now, and
// UtcNow properties, and the SpecifyKind(), ToLocalTime(),
// and ToUniversalTime() methods.
using System;
class Sample
{
public static void Main()
{
// Get the date and time for the current moment, adjusted
// to the local time zone.
DateTime saveNow = DateTime.Now;
// Get the date and time for the current moment expressed
// as coordinated universal time (UTC).
DateTime saveUtcNow = DateTime.UtcNow;
DateTime myDt;
// Display the value and Kind property of the current moment
// expressed as UTC and local time.
DisplayNow("UtcNow:..........", saveUtcNow);
DisplayNow("Now:.............", saveNow);
Console.WriteLine();
// Change the Kind property of the current moment to
// DateTimeKind.Utc and display the result.
myDt = DateTime.SpecifyKind(saveNow, DateTimeKind.Utc);
Display("Utc:.............", myDt);
// Change the Kind property of the current moment to
// DateTimeKind.Local and display the result.
myDt = DateTime.SpecifyKind(saveNow, DateTimeKind.Local);
Display("Local:...........", myDt);
// Change the Kind property of the current moment to
// DateTimeKind.Unspecified and display the result.
myDt = DateTime.SpecifyKind(saveNow, DateTimeKind.Unspecified);
Display("Unspecified:.....", myDt);
}
// Display the value and Kind property of a DateTime structure, the
// DateTime structure converted to local time, and the DateTime
// structure converted to universal time.
public static string datePatt = @"M/d/yyyy hh:mm:ss tt";
public static void Display(string title, DateTime inputDt)
{
DateTime dispDt = inputDt;
string dtString;
// Display the original DateTime.
dtString = dispDt.ToString(datePatt);
Console.WriteLine("{0} {1}, Kind = {2}",
title, dtString, dispDt.Kind);
// Convert inputDt to local time and display the result.
// If inputDt.Kind is DateTimeKind.Utc, the conversion is performed.
// If inputDt.Kind is DateTimeKind.Local, the conversion is not performed.
// If inputDt.Kind is DateTimeKind.Unspecified, the conversion is
|
// performed as if inputDt was universal time.
dispDt = inputDt.ToLocalTime();
dtString = dispDt.ToString(datePatt);
Console.WriteLine(" ToLocalTime: {0}, Kind = {1}",
dtString, dispDt.Kind);
// Convert inputDt to universal time and display the result.
// If inputDt.Kind is DateTimeKind.Utc, the conversion is not performed.
// If inputDt.Kind is DateTimeKind.Local, the conversion is performed.
// If inputDt.Kind is DateTimeKind.Unspecified, the conversion is
// performed as if inputDt was local time.
dispDt = inputDt.ToUniversalTime();
dtString = dispDt.ToString(datePatt);
Console.WriteLine(" ToUniversalTime: {0}, Kind = {1}",
dtString, dispDt.Kind);
Console.WriteLine();
}
// Display the value and Kind property for DateTime.Now and DateTime.UtcNow.
public static void DisplayNow(string title, DateTime inputDt)
{
string dtString = inputDt.ToString(datePatt);
Console.WriteLine("{0} {1}, Kind = {2}",
title, dtString, inputDt.Kind);
}
}
/*
This code example produces the following results:
UtcNow:.......... 5/6/2005 09:34:42 PM, Kind = Utc
Now:............. 5/6/2005 02:34:42 PM, Kind = Local
Utc:............. 5/6/2005 02:34:42 PM, Kind = Utc
ToLocalTime: 5/6/2005 07:34:42 AM, Kind = Local
ToUniversalTime: 5/6/2005 02:34:42 PM, Kind = Utc
Local:........... 5/6/2005 02:34:42 PM, Kind = Local
ToLocalTime: 5/6/2005 02:34:42 PM, Kind = Local
ToUniversalTime: 5/6/2005 09:34:42 PM, Kind = Utc
Unspecified:..... 5/6/2005 02:34:42 PM, Kind = Unspecified
ToLocalTime: 5/6/2005 07:34:42 AM, Kind = Local
ToUniversalTime: 5/6/2005 09:34:42 PM, Kind = Utc
*/
Тип DateTime используется для хранения времени с выделением даты (Date) и времени суток (Time).
Для вывода объекта в удобном формате используется набор полей для хранения свойств. Внешнее представление формируется из внутреннего и форматируется по стандартам представления даты и времени.
Свойства
Для объекта определены свойства:
Свойство | Описание |
Date | Дата |
Day | День месяца |
DayOfWeek | День недели |
DayOfYear | День года |
Hour | Час суток |
Kind | Поле хранения стандарта времени |
Minute | Минуты |
Month | Месяц |
Now | Местное время |
Second | Секунды |
Tics | Число тактов даты |
TimeOfDay | Время дня |
Today | Текущая дата |
UTCNow | Текущее время в общем стандарте |
Year | Год |
MaxValue | Максимальное время, только для чтения |
MaxValue | Минимальное время, только для чтения |
Методы
Для объекта определены методы. Основыне из них:
Метод | Описание |
Add(TimeSpan) | Добавить интервал TimeSpan |
AddDays(double) | Добавить дни |
AddHours(double) | Добавить часы |
AddMilliseconds(double) | Добавить миллисекунды |
AddMinutes(double) | Добавить минуты |
AddMounths(int) | Добавить месяцы |
AddSecondes(double) | Добавить секунды |
AddTics(long) | Число тактов даты |
AddYears(int) | Добавить годы |
Compare(DateTime, DateTime) | Сравнить время |
Compare(DateTime) | Сравнить текущее с аргуменнтом |
DateTime(y,m,d,h,mn,s,ms) | Задать (г,мес,день,час,мин,сек,мсек) |
DateTime.GetDateTimeFormats() | Преобразовать в формат |
Subtract(TimeSpan) | Вычесть интервал TimeSpan |
Subtract(DateTime) | Вычесть аргумент |
ToString() | Преобразует в строку |
ToString(формат) | Преобразует в строку в формате |