TimeZoneInfo.FindSystemTimeZoneById(String) TimeZoneInfo.FindSystemTimeZoneById(String) TimeZoneInfo.FindSystemTimeZoneById(String) TimeZoneInfo.FindSystemTimeZoneById(String) Method

Определение

Создает новый экземпляр объекта TimeZoneInfo на основе его идентификатора.Instantiates a new TimeZoneInfo object based on its identifier.

public:
 static TimeZoneInfo ^ FindSystemTimeZoneById(System::String ^ id);
public static TimeZoneInfo FindSystemTimeZoneById (string id);
static member FindSystemTimeZoneById : string -> TimeZoneInfo
Public Shared Function FindSystemTimeZoneById (id As String) As TimeZoneInfo

Параметры

id
String String String String

Идентификатор часового пояса, соответствующий свойству Id.The time zone identifier, which corresponds to the Id property.

Возвраты

Объект, идентификатор которого равен значению параметра id.An object whose identifier is the value of the id parameter.

Исключения

В системе недостаточно памяти для хранения сведений о часовом поясе.The system does not have enough memory to hold information about the time zone.

Параметр id имеет значение null.The id parameter is null.

Не найден идентификатор часового пояса, заданный параметром id.The time zone identifier specified by id was not found. Это означает, что идентификатор часового пояса, имя которого соответствует id, не существует, или что идентификатор существует, но не содержит данных о часовом поясе.This means that a time zone identifier whose name matches id does not exist, or that the identifier exists but does not contain any time zone data.

Процесс не имеет разрешений, необходимых для чтения из раздела реестра, который содержит сведения о часовом поясе.The process does not have the permissions required to read from the registry key that contains the time zone information.

Идентификатор часового пояса найден, однако данные реестра повреждены.The time zone identifier was found, but the registry data is corrupted.

Примеры

В следующем примере используется FindSystemTimeZoneById метод для извлечения Токио стандартном часовом поясе.The following example uses the FindSystemTimeZoneById method to retrieve the Tokyo Standard Time zone. Это TimeZoneInfo объект затем используется для преобразования местного времени во время в Токио и определить, является ли оно Токийское время или летнее.This TimeZoneInfo object is then used to convert the local time to the time in Tokyo and to determine whether it is Tokyo Standard Time or Tokyo Daylight Time.

using System;

public class Example
{
   public static void Main()
   {
      // Get time in local time zone 
      DateTime thisTime = DateTime.Now;
      Console.WriteLine("Time in {0} zone: {1}", TimeZoneInfo.Local.IsDaylightSavingTime(thisTime) ?
                        TimeZoneInfo.Local.DaylightName : TimeZoneInfo.Local.StandardName, thisTime);
      Console.WriteLine("   UTC Time: {0}", TimeZoneInfo.ConvertTimeToUtc(thisTime, TimeZoneInfo.Local));
      // Get Tokyo Standard Time zone
      TimeZoneInfo tst = TimeZoneInfo.FindSystemTimeZoneById("Tokyo Standard Time");
      DateTime tstTime = TimeZoneInfo.ConvertTime(thisTime, TimeZoneInfo.Local, tst);      
      Console.WriteLine("Time in {0} zone: {1}", tst.IsDaylightSavingTime(tstTime) ?
                        tst.DaylightName : tst.StandardName, tstTime);
      Console.WriteLine("   UTC Time: {0}", TimeZoneInfo.ConvertTimeToUtc(tstTime, tst));
   }
}
// The example displays output like the following when run on a system in the
// U.S. Pacific Standard Time zone:
//       Time in Pacific Standard Time zone: 12/6/2013 10:57:51 AM
//          UTC Time: 12/6/2013 6:57:51 PM
//       Time in Tokyo Standard Time zone: 12/7/2013 3:57:51 AM
//          UTC Time: 12/6/2013 6:57:51 PM
Module Example
   Public Sub Main()
      ' Get time in local time zone 
      Dim thisTime As Date = Date.Now
      Console.WriteLine("Time in {0} zone: {1}", IIf(TimeZoneInfo.Local.IsDaylightSavingTime(thisTime), 
                        TimeZoneInfo.Local.DaylightName, TimeZoneInfo.Local.StandardName), thisTime)
      Console.WriteLine("   UTC Time: {0}", TimeZoneInfo.ConvertTimeToUtc(thisTime, TimeZoneInfo.Local))
      ' Get Tokyo Standard Time zone
      Dim tst As TimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("Tokyo Standard Time")
      Dim tstTime As Date = TimeZoneInfo.ConvertTime(thisTime, TimeZoneInfo.Local, tst)      
      Console.WriteLine("Time in {0} zone: {1}", IIf(tst.IsDaylightSavingTime(tstTime), 
                        tst.DaylightName, tst.StandardName), tstTime)
      Console.WriteLine("   UTC Time: {0}", TimeZoneInfo.ConvertTimeToUtc(tstTime, tst))
   End Sub
End Module
' The example displays output like the following when run on a system in the U.S.
' Pacific Standard Time zone:
'    Time in Pacific Standard Time zone: 12/6/2013 10:57:51 AM
'       UTC Time: 12/6/2013 6:57:51 PM
'    Time in Tokyo Standard Time zone: 12/7/2013 3:57:51 AM
'       UTC Time: 12/6/2013 6:57:51 PM

Комментарии

id Параметр должен точно соответствовать идентификатор часового пояса в длину, но не в случае для успешного сопоставления; то есть сравнение id с часовым поясом идентификаторы без учета регистра.The id parameter must correspond exactly to the time zone's identifier in length, but not in case, for a successful match to occur; that is, the comparison of id with time zone identifiers is case-insensitive. Если вы хотите получить объекты часового пояса в зависимости от частичные совпадения, можно написать пользовательские процедуры, которые работают с доступным только для чтения коллекция TimeZoneInfo объектов, возвращенных GetSystemTimeZones метод.If you want to retrieve time zone objects based on partial matches, you can write custom procedures that work with the read-only collection of TimeZoneInfo objects returned by the GetSystemTimeZones method.

В системах Windows FindSystemTimeZoneById пытается сопоставить id к имена подразделов реестра HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Time Zones ветви.On Windows systems, FindSystemTimeZoneById tries to match id to the subkey names of the HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Time Zones branch of the registry. В Linux и macOS, он использует сведения о часовом поясе в ICU библиотеки.On Linux and macOS, it uses time zone information available in the ICU Library. Если не содержит сведения о часовом поясе, необходимы, реестр или в библиотеке, можно создать определенный часовой пояс либо путем вызова одной из перегрузок CreateCustomTimeZone метод или вызвав FromSerializedString для десериализации TimeZoneInfo объекта, представляет требуемый часовой пояс.If the registry or the library does not have the information for the time zone you desire, you can create a particular time zone either by calling one of the overloads of the CreateCustomTimeZone method or by calling FromSerializedString to deserialize a TimeZoneInfo object that represents the required time zone. Тем не менее, не определенный системой времени часовых поясов, созданные эти вызовы методов и нельзя получить с помощью FindSystemTimeZoneById метод.However, time zones created by these method calls are not system-defined time and cannot be retrieved using the FindSystemTimeZoneById method. Эти пользовательские часовые пояса может осуществляться только через ссылку на объект, возвращаемый CreateCustomTimeZone или FromSerializedString вызова метода.These custom time zones can be accessed only through the object reference returned by the CreateCustomTimeZone or FromSerializedString method call.

Этот метод возвращает новый TimeZoneInfo экземпляра для каждого вызова метода; он не возвращает кэшированные объекты.This method returns a new TimeZoneInfo instance for each method call; it does not return cached objects. Это может повлиять на производительность приложений, которые вызывают FindSystemTimeZoneById метод несколько раз с тем же идентификатором.This may impact performance in applications that call the FindSystemTimeZoneById method repeatedly with the same identifier.

Применяется к

Дополнительно