TimeZoneInfo.FindSystemTimeZoneById(String) Метод

Определение

Создает новый экземпляр объекта 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

Идентификатор часового пояса, соответствующий свойству 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 используется для получения часового пояса в Токио Standard.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 \Софтваре\микрософт\виндовс Nt\currentversion\time Zones 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.

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

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