Значение часовых поясов windows

Практическое руководство. Использование часовых поясов в арифметических операциях с датами и временем How to: Use time zones in date and time arithmetic

Обычно при выполнении арифметических операций с датами и временем с помощью DateTime DateTimeOffset значений или значения в результате не отражать правила коррекции часовых поясов. Ordinarily, when you perform date and time arithmetic using DateTime or DateTimeOffset values, the result does not reflect any time zone adjustment rules. Это справедливо, даже если часовой пояс значения даты и времени четко идентифицируем (например, если Kind свойство имеет значение Local ). This is true even when the time zone of the date and time value is clearly identifiable (for example, when the Kind property is set to Local). В этом разделе показано, как выполнять арифметические операции с значениями даты и времени, относящимися к определенному часовому поясу. This topic shows how to perform arithmetic operations on date and time values that belong to a particular time zone. Результаты арифметических операций при этом будут учитывать правила коррекции часовых поясов. The results of the arithmetic operations will reflect the time zone’s adjustment rules.

Применение правил коррекции в вычислениях с датами и временем To apply adjustment rules to date and time arithmetic

Необходимо каким-либо способом тесно связать значения даты и времени с соответствующим часовым поясом. Implement some method of closely coupling a date and time value with the time zone to which it belongs. К примеру, можно объявить структуру, которая будет содержать значение даты и времени вместе с данными о часовом поясе. For example, declare a structure that includes both the date and time value and its time zone. В следующем примере этот подход используется для связывания DateTime значения со своим часовым поясом. The following example uses this approach to link a DateTime value with its time zone.

Преобразуйте время в время в формате UTC, вызвав ConvertTimeToUtc метод или ConvertTime метод. Convert a time to Coordinated Universal Time (UTC) by calling either the ConvertTimeToUtc method or the ConvertTime method.

Далее следует выполнить необходимые арифметические действия над временем UTC. Perform the arithmetic operation on the UTC time.

Преобразуйте время из времени в формате UTC во время, связанное с исходным часовым поясом, вызвав TimeZoneInfo.ConvertTime(DateTime, TimeZoneInfo) метод. Convert the time from UTC to the original time’s associated time zone by calling the TimeZoneInfo.ConvertTime(DateTime, TimeZoneInfo) method.

Пример Example

В следующем примере к 9 марта 2008 г., 1:30 The following example adds two hours and thirty minutes to March 9, 2008, at 1:30 A.M. центрального стандартного времени прибавляется два часа и тридцать минут. Central Standard Time. Переход на летнее время в этом часовом поясе происходит на 30 минут позже, в 2:00 The time zone’s transition to daylight saving time occurs thirty minutes later, at 2:00 A.M. 9 марта, 2008 г. on March 9, 2008. Поскольку в этом примере выполнены четыре шага, описанные в предыдущем разделе, он правильно возвращает итоговое время, равное 5:00 Because the example follows the four steps listed in the previous section, it correctly reports the resulting time as 5:00 A.M. 9 марта, 2008 г. on March 9, 2008.

DateTimeЗначения и DateTimeOffset не связаны с любым часовым поясом, к которому они могут относиться. Both DateTime and DateTimeOffset values are disassociated from any time zone to which they might belong. Для того чтобы арифметические действия с датами и временем выполнялись таким образом, что правила коррекции часовых поясов учитывались бы автоматически, сведения о часовом поясе, к которому относятся значения даты и времени, должны быть известны и непосредственно доступны. To perform date and time arithmetic in a way that automatically applies a time zone’s adjustment rules, the time zone to which any date and time value belongs must be immediately identifiable. Это означает, что значения даты и времени должны быть тесно связаны с часовым поясом. This means that a date and time and its associated time zone must be tightly coupled. Для того, чтобы этого добиться, существует целый ряд способов, некоторые из них перечислены ниже. There are several ways to do this, which include the following:

Предположим, что все значения времени, используемые в приложении, принадлежат к определенному часовому поясу. Assume that all times used in an application belong to a particular time zone. Хотя этот подход вполне применим во многих случаях, его гибкость и, возможно, переносимость имеют ограничения. Although appropriate in some cases, this approach offers limited flexibility and possibly limited portability.

Следует определить тип, в котором значение даты и времени тесно связано с часовым поясом, включив эти данные в состав типа в качестве полей. Define a type that tightly couples a date and time with its associated time zone by including both as fields of the type. Этот подход используется в примере кода — в нем определяется структура для хранения даты, времени и часового пояса в двух полях структуры. This approach is used in the code example, which defines a structure to store the date and time and the time zone in two member fields.

Читайте также:  Asus drivers update utility для windows

В примере показано, как выполнять арифметические операции со DateTime значениями, чтобы применить к результату правила коррекции часовых поясов. The example illustrates how to perform arithmetic operations on DateTime values so that time zone adjustment rules are applied to the result. Тем DateTimeOffset не менее значения можно использовать так же просто. However, DateTimeOffset values can be used just as easily. В следующем примере показано, как можно адаптировать код в исходном примере для использования DateTimeOffset вместо DateTime значений. The following example illustrates how the code in the original example might be adapted to use DateTimeOffset instead of DateTime values.

Обратите внимание, что если это сложение выполняется просто над DateTimeOffset значением без предварительного преобразования его в формат UTC, результат отражает правильный момент времени, но его смещение не отражается на назначенном часовом поясе. Note that if this addition is simply performed on the DateTimeOffset value without first converting it to UTC, the result reflects the correct point in time but its offset does not reflect that of the designated time zone for that time.

Компиляция кода Compiling the code

Для этого примера требуются: This example requires:

  • , Что System пространство имен должно быть импортировано с помощью using оператора (требуется в коде C#). That the System namespace be imported with the using statement (required in C# code).

Даты, время и часовые пояса Dates, times, and time zones

В дополнение к основной структуре DateTime платформа .NET предоставляет следующие классы, которые поддерживают работу с часовыми поясами. In addition to the basic DateTime structure, .NET provides the following classes that support working with time zones:

Этот класс используется для работы с локальным часовым поясом и с временем в формате UTC. Use this class to work with the system’s local time zone and the Coordinated Universal Time (UTC) zone. Функциональные возможности класса в TimeZone основном заменяются TimeZoneInfo классом. The functionality of the TimeZone class is largely superseded by the TimeZoneInfo class.

Этот класс используется для работы с любым часовым поясом, который является стандартным в системе, для создания новых часовых поясов и для быстрого преобразования значений даты и времени из одного часового пояса в другой. Use this class to work with any time zone that is predefined on a system, to create new time zones, and to easily convert dates and times from one time zone to another. При разработке нового решения используйте класс TimeZoneInfo вместо класса TimeZone. For new development, use the TimeZoneInfo class instead of the TimeZone class.

Эта структура используется для работы с датами и временем, чье смещение (или различие) от времени в формате UTC известно. Use this structure to work with dates and times whose offset (or difference) from UTC is known. Структура DateTimeOffset объединяет значение даты и времени со смещением этого времени от времени в формате UTC. The DateTimeOffset structure combines a date and time value with that time’s offset from UTC. Благодаря связи со временем в формате UTC отдельное значение даты и времени однозначно идентифицирует единственный момент времени. Because of its relationship to UTC, an individual date and time value unambiguously identifies a single point in time. Это делает значение DateTimeOffset более пригодным для переноса с одного компьютера на другой, чем значение DateTime. This makes a DateTimeOffset value more portable from one computer to another than a DateTime value.

Этот раздел документации содержит сведения, необходимые для работы с часовыми поясами и создания приложений, поддерживающих часовые пояса и способных преобразовывать дату и время из одного часового пояса в другой. This section of the documentation provides the information that you need to work with time zones and to create time zone-aware applications that can convert dates and times from one time zone to another.

Содержание раздела In this section

Общие сведения о часовых поясах Описание терминологии, основных понятий и вопросов, связанных с созданием приложений, поддерживающих часовые пояса. Time zone overview Discusses the terminology, concepts, and issues involved in creating time zone-aware applications.

Поиск часового пояса, заданного в локальной системе. Описание того, как перечислять часовые пояса, находящиеся в локальной системе. Finding the time zones defined on a local system Describes how to enumerate the time zones found on a local system.

Практическое руководство. Перечисление присутствующих на компьютере часовых поясов. Примеры, в которых перечисляются часовые пояса, определенные в реестре компьютера, и которые предоставляют пользователям возможность выбрать предопределенный часовой пояс из списка. How to: Enumerate time zones present on a computer Provides examples that enumerate the time zones defined in a computer’s registry and that let users select a predefined time zone from a list.

Практическое руководство. Доступ к предварительно определенным объектам UTC и объектам местных часовых поясов. Описание способов доступа ко времени в формате UTC и локальному часовому поясу. How to: Access the predefined UTC and local time zone objects Describes how to access Coordinated Universal Time and the local time zone.

Читайте также:  Что такое skype portable для windows

Практическое руководство. Создание экземпляра объекта TimeZoneInfo. Описание способов создания экземпляра объекта TimeZoneInfo из локального системного реестра. How to: Instantiate a TimeZoneInfo object Describes how to instantiate a TimeZoneInfo object from the local system registry.

Создание экземпляра объекта DateTimeOffset. Описание способов, с помощью которых можно создать экземпляр объекта DateTimeOffset и преобразовать значение DateTime в значение DateTimeOffset. Instantiating a DateTimeOffset object Discusses the ways in which a DateTimeOffset object can be instantiated, and the ways in which a DateTime value can be converted to a DateTimeOffset value.

Практическое руководство. Создание часовых поясов без правил коррекции. Описание того, как можно создать пользовательский часовой пояс, который не поддерживает переход на летнее время и обратно. How to: Create time zones without adjustment rules Describes how to create a custom time zone that does not support the transition to and from daylight saving time.

Практическое руководство. Создание часовых поясов с правилами коррекции. Описание того, как можно создать пользовательский часовой пояс, который поддерживает переход на летнее время и обратно. How to: Create time zones with adjustment rules Describes how to create a custom time zone that supports one or more transitions to and from daylight saving time.

Сохранение и восстановление часовых поясов. Описание сериализации и десериализации данных часового пояса в TimeZoneInfo и демонстрация некоторых сценариев, в которых эти функции могут использоваться. Saving and restoring time zones Describes TimeZoneInfo support for serialization and deserialization of time zone data and illustrates some of the scenarios in which these features can be used.

Практическое руководство. Сохранение часовых поясов во внедренном ресурсе. Описание того, как создать пользовательский часовой пояс и сохранить связанные сведения в файле ресурсов. How to: Save time zones to an embedded resource Describes how to create a custom time zone and save its information in a resource file.

Практическое руководство. Восстановление часовых поясов из внедренного ресурса. Описание того, как восстановить пользовательский часовой пояс, сохраненный в файл ресурсов. How to: Restore time zones from an embedded resource Describes how to instantiate custom time zones that have been saved to an embedded resource file.

Выполнение арифметических операций с датами и временем. Обзор вопросов, связанных со сложением, вычитанием и сравнением значений DateTime и DateTimeOffset. Performing arithmetic operations with dates and times Discusses the issues involved in adding, subtracting, and comparing DateTime and DateTimeOffset values.

Практическое руководство. Использование часовых поясов в арифметических операциях с датами и временем. Описание того, как выполнять с датами и временем арифметические действия, которые отражают правила коррекции часовых поясов. How to: Use time zones in date and time arithmetic Discusses how to perform date and time arithmetic that reflects a time zone’s adjustment rules.

Преобразование времени из одного часового пояса в другой. Описание того, как преобразовать время из одного часового пояса в другой. Converting times between time zones Describes how to convert times from one time zone to another.

Практическое руководство. Разрешение проблемы неоднозначности времени. Сведения об устранении неоднозначного времени с помощью его сопоставления с часовым поясом стандартного времени. How to: Resolve ambiguous times Describes how to resolve an ambiguous time by mapping it to the time zone’s standard time.

Практическое руководство. Предоставление пользователям возможности разрешения неоднозначности времени Сведения о том, как позволить пользователю определять сопоставление между неоднозначными местным временем и временем в формате UTC. How to: Let users resolve ambiguous times Describes how to let a user determine the mapping between an ambiguous local time and Coordinated Universal Time.

Практическое руководство. Перечисление присутствующих на компьютере часовых поясов How to: Enumerate time zones present on a computer

Для успешной работы с указанным часовым поясом необходимо, чтобы сведения об этом часовом поясе были доступны в системе. Successfully working with a designated time zone requires that information about that time zone be available to the system. В операционных системах Windows XP и Windows Vista эти сведения хранятся в реестре. The Windows XP and Windows Vista operating systems store this information in the registry. Тем не менее, хотя общее число часовых поясов, которые существуют по всему миру, велико, реестр содержит сведения только о подмножестве из них. However, although the total number of time zones that exist throughout the world is large, the registry contains information about only a subset of them. Кроме того, реестр сам является динамической структурой, содержимое которой подвержено преднамеренным и случайным изменениям. In addition, the registry itself is a dynamic structure whose contents are subject to both deliberate and accidental change. В итоге приложение не может всегда предполагать, что конкретный часовой пояс определен и доступен в системе. As a result, an application cannot always assume that a particular time zone is defined and available on a system. Первым шагом для многих приложений, использующих данные о часовых поясах, является определение доступности требуемого часового пояса на локальном компьютере или предоставление пользователю списка часовых поясов для выбора. The first step for many applications that use time zone information applications is to determine whether required time zones are available on the local system, or to give the user a list of time zones from which to select. Для этого необходимо, чтобы приложение перечислило часовые пояса, определенные в локальной системе. This requires that an application enumerate the time zones defined on a local system.

Читайте также:  Smart view samsung для windows

Если приложение полагается на присутствие определенного часового пояса, которое не может быть определено в локальной системе, приложение может обеспечить его присутствие путем сериализации и десериализации сведений о часовом поясе. If an application relies on the presence of a particular time zone that may not be defined on a local system, the application can ensure its presence by serializing and deserializing information about the time zone. Затем часовой пояс можно добавить в элемент управления «список», чтобы пользователь приложения мог выбрать его. The time zone can then be added to a list control so that the application user can select it. Дополнительные сведения см. в разделе как сохранить Часовые пояса во внедренном ресурсе и как восстановить Часовые пояса из внедренного ресурса. For details, see How to: Save Time Zones to an Embedded Resource and How to: Restore time zones from an embedded resource.

Перечисление часовых поясов, присутствующих в локальной системе To enumerate the time zones present on the local system

Вызовите метод TimeZoneInfo.GetSystemTimeZones . Call the TimeZoneInfo.GetSystemTimeZones method. Метод возвращает универсальную ReadOnlyCollection коллекцию TimeZoneInfo объектов. The method returns a generic ReadOnlyCollection collection of TimeZoneInfo objects. Записи в коллекции сортируются по их DisplayName свойству. The entries in the collection are sorted by their DisplayName property. Пример: For example:

Перечисляет отдельные TimeZoneInfo объекты в коллекции с помощью foreach цикла (в C#) или For Each . Next Enumerate the individual TimeZoneInfo objects in the collection by using a foreach loop (in C#) or a For Each … Next цикл (в Visual Basic) и выполните необходимую обработку для каждого объекта. loop (in Visual Basic), and perform any necessary processing on each object. Например, следующий код перечисляет ReadOnlyCollection коллекцию TimeZoneInfo объектов, возвращенных на шаге 1, и отображает отображаемое имя каждого часового пояса в консоли. For example, the following code enumerates the ReadOnlyCollection collection of TimeZoneInfo objects returned in step 1 and lists the display name of each time zone on the console.

Предоставление пользователю списка часовых поясов, имеющихся в локальной системе To present the user with a list of time zones present on the local system

Вызовите метод TimeZoneInfo.GetSystemTimeZones . Call the TimeZoneInfo.GetSystemTimeZones method. Метод возвращает универсальную ReadOnlyCollection коллекцию TimeZoneInfo объектов. The method returns a generic ReadOnlyCollection collection of TimeZoneInfo objects.

Назначьте коллекцию, возвращенную в шаге 1, DataSource свойству элемента управления Windows Forms или ASP.NET List. Assign the collection returned in step 1 to the DataSource property of a Windows forms or ASP.NET list control.

Получение TimeZoneInfo объекта, выбранного пользователем. Retrieve the TimeZoneInfo object that the user has selected.

В примере показана Иллюстрация для приложения Windows. The example provides an illustration for a Windows application.

Пример Example

В примере запускается приложение Windows, которое отображает Часовые пояса, определенные в системе, в поле со списком. The example starts a Windows application that displays the time zones defined on a system in a list box. Затем в примере отображается диалоговое окно, содержащее значение DisplayName свойства объекта часового пояса, выбранного пользователем. The example then displays a dialog box that contains the value of the DisplayName property of the time zone object selected by the user.

Большинство элементов управления «список» (например, System.Windows.Forms.ListBox или System.Web.UI.WebControls.BulletedList ) позволяют назначить коллекцию переменных объекта их DataSource свойству, если эта коллекция реализует IEnumerable интерфейс. Most list controls (such as the System.Windows.Forms.ListBox or System.Web.UI.WebControls.BulletedList control) allow you to assign a collection of object variables to their DataSource property as long as that collection implements the IEnumerable interface. ( ReadOnlyCollection Это делается универсальным классом.) Чтобы отобразить отдельный объект в коллекции, элемент управления вызывает ToString метод объекта для извлечения строки, используемой для представления объекта. (The generic ReadOnlyCollection class does this.) To display an individual object in the collection, the control calls that object’s ToString method to extract the string that is used to represent the object. В случае с TimeZoneInfo объектами ToString метод возвращает TimeZoneInfo Отображаемое имя объекта (значение его DisplayName Свойства). In the case of TimeZoneInfo objects, the ToString method returns the TimeZoneInfo object’s display name (the value of its DisplayName property).

Поскольку элементы управления «список» вызывают ToString метод объекта, можно присвоить TimeZoneInfo элементу управления коллекцию объектов, отображать для каждого объекта понятное имя и получать TimeZoneInfo объект, выбранный пользователем. Because list controls call an object’s ToString method, you can assign a collection of TimeZoneInfo objects to the control, have the control display a meaningful name for each object, and retrieve the TimeZoneInfo object that the user has selected. Это избавляет от необходимости извлекать строку для каждого объекта в коллекции, присваивать строку коллекции, которая в свою очередь назначена DataSource свойству элемента управления, получать строку, выбранную пользователем, а затем использовать эту строку для извлечения объекта, который он описывает. This eliminates the need to extract a string for each object in the collection, assign the string to a collection that is in turn assigned to the control’s DataSource property, retrieve the string the user has selected, and then use this string to extract the object that it describes.

Компиляция кода Compiling the code

Для этого примера требуются: This example requires:

Для импорта следующих пространств имен: That the following namespaces be imported:

Оцените статью