Поделиться через


TimeZoneInfo.ConvertTimeBySystemTimeZoneId Метод

Определение

Преобразует время во время в другом часовом поясе, исходя из идентификатора этого пояса.

Перегрузки

ConvertTimeBySystemTimeZoneId(DateTime, String)

Преобразует время во время в другом часовом поясе, исходя из идентификатора этого пояса.

ConvertTimeBySystemTimeZoneId(DateTimeOffset, String)

Преобразует время во время в другом часовом поясе, исходя из идентификатора этого пояса.

ConvertTimeBySystemTimeZoneId(DateTime, String, String)

Преобразует время в одном часовом поясе во время в другом, исходя из идентификаторов этих поясов.

ConvertTimeBySystemTimeZoneId(DateTime, String)

Исходный код:
TimeZoneInfo.cs
Исходный код:
TimeZoneInfo.cs
Исходный код:
TimeZoneInfo.cs

Преобразует время во время в другом часовом поясе, исходя из идентификатора этого пояса.

public:
 static DateTime ConvertTimeBySystemTimeZoneId(DateTime dateTime, System::String ^ destinationTimeZoneId);
public static DateTime ConvertTimeBySystemTimeZoneId (DateTime dateTime, string destinationTimeZoneId);
static member ConvertTimeBySystemTimeZoneId : DateTime * string -> DateTime
Public Shared Function ConvertTimeBySystemTimeZoneId (dateTime As DateTime, destinationTimeZoneId As String) As DateTime

Параметры

dateTime
DateTime

Преобразовываемые дата и время.

destinationTimeZoneId
String

Идентификатор часового пояса назначения.

Возвращаемое значение

Дата и время в часовом поясе назначения.

Исключения

destinationTimeZoneId имеет значение null.

Идентификатор часового пояса найден, однако данные реестра повреждены.

Процесс не имеет разрешений, необходимых для чтения из раздела реестра, который содержит сведения о часовом поясе.

Идентификатор destinationTimeZoneId не найден в локальной системе.

Комментарии

При выполнении преобразования метод применяет все правила корректировки ConvertTimeBySystemTimeZoneId , которые действуют в часовом поясе destinationTimeZoneId .

Эта перегрузка в значительной степени идентична вызову ConvertTime(DateTime, TimeZoneInfo) метода , за исключением того, что она позволяет указать часовой пояс назначения по его идентификатору, а не по ссылке на объект. Этот метод наиболее полезен, если необходимо преобразовать время без получения соответствующего ему объекта часового пояса, и вам не нужно знать, является ли преобразованное время стандартным или переходным на летнее время.

Метод ConvertTimeBySystemTimeZoneId(DateTime, String) определяет часовой пояс источника из значения dateTime свойства параметра Kind , как показано в следующей таблице.

Значение свойства Kind Исходный часовой пояс Поведение метода
DateTimeKind.Local Local Преобразует местное время в .destinationTimeZone
DateTimeKind.Utc Utc Преобразует время в формате UTC в время в destinationTimeZone.
DateTimeKind.Unspecified Предполагается, что это Local. Преобразует местное время в .destinationTimeZone

Свойство Kind возвращаемого DateTime значения задается, как показано в следующей таблице.

Условие Возвращенное значение свойства Kind
Значение параметра destinationTimeZoneTimeZoneInfo.Utc.Id. DateTimeKind.Utc
Любое другое destinationTimeZone значение. DateTimeKind.Unspecified

Если значение dateTime параметра является неоднозначным местным временем, оно интерпретируется как стандартное время. dateTime Если параметр является недопустимым локальным временем, этот метод вызывает исключение ArgumentException.

Если преобразование приводит к значению dateTime даты и времени, которое раньше DateTime.MinValue или позже DateTime.MaxValue, этот метод возвращает DateTime.MinValue значение или DateTime.MaxValueсоответственно.

Этот метод получает сведения о часовом поясе, идентификатор которого указан параметром destinationTimeZoneId из реестра в системах Windows и из библиотеки ICU в Linux и macOS. Не удается получить объект часового пояса, созданный с помощью CreateCustomTimeZone метода . Параметр destinationTimeZoneId должен точно соответствовать идентификатору часового пояса по длине, но не в случае успешного destinationTimeZoneId совпадения. То есть сравнение с идентификаторами часовых поясов не учитывает регистр.

См. также раздел

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

ConvertTimeBySystemTimeZoneId(DateTimeOffset, String)

Исходный код:
TimeZoneInfo.cs
Исходный код:
TimeZoneInfo.cs
Исходный код:
TimeZoneInfo.cs

Преобразует время во время в другом часовом поясе, исходя из идентификатора этого пояса.

public:
 static DateTimeOffset ConvertTimeBySystemTimeZoneId(DateTimeOffset dateTimeOffset, System::String ^ destinationTimeZoneId);
public static DateTimeOffset ConvertTimeBySystemTimeZoneId (DateTimeOffset dateTimeOffset, string destinationTimeZoneId);
static member ConvertTimeBySystemTimeZoneId : DateTimeOffset * string -> DateTimeOffset
Public Shared Function ConvertTimeBySystemTimeZoneId (dateTimeOffset As DateTimeOffset, destinationTimeZoneId As String) As DateTimeOffset

Параметры

dateTimeOffset
DateTimeOffset

Преобразовываемые дата и время.

destinationTimeZoneId
String

Идентификатор часового пояса назначения.

Возвращаемое значение

Дата и время в часовом поясе назначения.

Исключения

destinationTimeZoneId имеет значение null.

Идентификатор часового пояса найден, однако данные реестра повреждены.

Процесс не имеет разрешений, необходимых для чтения из раздела реестра, который содержит сведения о часовом поясе.

Идентификатор destinationTimeZoneId не найден в локальной системе.

Комментарии

При выполнении преобразования метод применяет все правила корректировки ConvertTimeBySystemTimeZoneId , которые действуют в часовом поясе destinationTimeZoneId .

Эта перегрузка идентична вызову ConvertTime(DateTimeOffset, TimeZoneInfo) метода , за исключением того, что она позволяет указать часовой пояс назначения по его идентификатору, а не по ссылке на объект. Этот метод наиболее полезен, если необходимо преобразовать время без получения соответствующего ему объекта часового пояса, и вам не нужно знать, является ли преобразованное время стандартным или переходным на летнее время.

dateTimeOffset Так как параметр представляет дату и время вместе со смещением этого времени от времени в формате UTC, он не может представлять неоднозначное время или недопустимое время.

Этот метод извлекает часовой пояс, идентификатор которого указан параметром destinationTimeZoneId , из реестра в системах Windows и из библиотеки ICU в Linux и macOS. Не удается получить объект часового пояса, созданный с помощью CreateCustomTimeZone метода . Параметр destinationTimeZoneId должен точно соответствовать идентификатору часового пояса по длине, но не в случае успешного destinationTimeZoneId совпадения. То есть сравнение с идентификаторами часовых поясов не учитывает регистр.

При преобразовании dateTimeOffset значения во время в часовом поясе назначения метод учитывает все правила корректировки, которые действуют в часовом поясе назначения.

Если преобразование приводит к значению dateTimeOffset даты и времени, которое раньше DateTimeOffset.MinValue или позже DateTimeOffset.MaxValue, этот метод возвращает DateTimeOffset.MinValue значение или DateTimeOffset.MaxValueсоответственно.

См. также раздел

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

ConvertTimeBySystemTimeZoneId(DateTime, String, String)

Исходный код:
TimeZoneInfo.cs
Исходный код:
TimeZoneInfo.cs
Исходный код:
TimeZoneInfo.cs

Преобразует время в одном часовом поясе во время в другом, исходя из идентификаторов этих поясов.

public:
 static DateTime ConvertTimeBySystemTimeZoneId(DateTime dateTime, System::String ^ sourceTimeZoneId, System::String ^ destinationTimeZoneId);
public static DateTime ConvertTimeBySystemTimeZoneId (DateTime dateTime, string sourceTimeZoneId, string destinationTimeZoneId);
static member ConvertTimeBySystemTimeZoneId : DateTime * string * string -> DateTime
Public Shared Function ConvertTimeBySystemTimeZoneId (dateTime As DateTime, sourceTimeZoneId As String, destinationTimeZoneId As String) As DateTime

Параметры

dateTime
DateTime

Преобразовываемые дата и время.

sourceTimeZoneId
String

Идентификатор исходного часового пояса.

destinationTimeZoneId
String

Идентификатор часового пояса назначения.

Возвращаемое значение

Дата и время в часовом поясе назначения, которые соответствуют значению параметра dateTime в исходном часовом поясе.

Исключения

Свойство Kind параметра dateTime не соответствует исходному часовому поясу.

-или-

dateTime является недопустимым временем в исходном часовом поясе.

sourceTimeZoneId имеет значение null.

-или-

destinationTimeZoneId имеет значение null.

Идентификаторы часового пояса найдены, однако данные реестра повреждены.

У пользователя нет разрешений, необходимых для чтения из разделов реестра, которые содержат сведения о часовом поясе.

Идентификатор sourceTimeZoneId не найден в локальной системе.

-или-

Идентификатор destinationTimeZoneId не найден в локальной системе.

Примеры

В следующем примере метод используется TimeZoneInfo.ConvertTimeBySystemTimeZoneId(DateTime, String, String) для отображения времени, соответствующего местному системном времени в восьми городах мира.

DateTime currentTime = DateTime.Now;
Console.WriteLine("Current Times:");
Console.WriteLine();
Console.WriteLine("Los Angeles: {0}", 
                  TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, "Pacific Standard Time"));
Console.WriteLine("Chicago: {0}", 
                  TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, "Central Standard Time"));
Console.WriteLine("New York: {0}", 
                  TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, "Eastern Standard Time"));
Console.WriteLine("London: {0}", 
                  TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, "GMT Standard Time"));
Console.WriteLine("Moscow: {0}", 
                  TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, "Russian Standard Time"));
Console.WriteLine("New Delhi: {0}", 
                  TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, "India Standard Time"));
Console.WriteLine("Beijing: {0}", 
                  TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, "China Standard Time"));
Console.WriteLine("Tokyo: {0}", 
                  TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, "Tokyo Standard Time"));
let currentTime = DateTime.Now
printfn "Current Times:\n"
printfn $"""Los Angeles: {TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, "Pacific Standard Time")}"""
printfn $"""Chicago: {TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, "Central Standard Time")}"""
printfn $"""New York: {TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, "Eastern Standard Time")}"""
printfn $"""London: {TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, "GMT Standard Time")}"""
printfn $"""Moscow: {TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, "Russian Standard Time")}"""
printfn $"""New Delhi: {TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, "India Standard Time")}"""
printfn $"""Beijing: {TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, "China Standard Time")}"""
printfn $"""Tokyo: {TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, "Tokyo Standard Time")}"""
Dim currentTime As Date = Date.Now
Console.WriteLine("Current Times:")
Console.WriteLine()
Console.WriteLine("Los Angeles: {0}", _
                  TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, "Pacific Standard Time"))
Console.WriteLine("Chicago: {0}", _ 
                  TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, "Central Standard Time"))
Console.WriteLine("New York: {0}", _
                  TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, "Eastern Standard Time"))
Console.WriteLine("London: {0}", _
                  TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, "GMT Standard Time"))
Console.WriteLine("Moscow: {0}", _
                  TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, "Russian Standard Time"))
Console.WriteLine("New Delhi: {0}", _
                  TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, "India Standard Time"))
Console.WriteLine("Beijing: {0}", _
                  TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, "China Standard Time"))
Console.WriteLine("Tokyo: {0}", _
                  TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, "Tokyo Standard Time"))

Комментарии

При выполнении преобразования метод применяет все правила корректировки ConvertTimeBySystemTimeZoneId , которые действуют в часовом поясе destinationTimeZoneId .

Несмотря на то, что он аналогичен методу TimeZoneInfo.ConvertTime(DateTime, TimeZoneInfo, TimeZoneInfo) , можно использовать для TimeZoneInfo.ConvertTimeBySystemTimeZoneId(DateTime, String, String) указания часовых поясов источника и назначения с помощью идентификаторов вместо объектов TimeZoneInfo . Этот метод наиболее полезен, если необходимо преобразовать время без получения соответствующего ему объекта часового пояса, и вам не нужно знать, является ли преобразованное время стандартным или переходным на летнее время.

Этот метод извлекает часовые пояса, идентификаторами которых являются sourceTimeZoneId параметры и destinationTimeZoneId , из реестра в системах Windows и из библиотеки ICU в Linux и macOS. Не удается получить объекты часового пояса, созданные CreateCustomTimeZone с помощью метода .

Значение Kind свойства dateTime параметра должно соответствовать параметру, как показано в sourceTimeZoneId следующей таблице.

Значение DateTime.Kind значение sourceTimeZone Поведение метода
DateTimeKind.Utc Равно TimeZoneInfo.Utc.Id. Преобразует dateTime в часовой пояс назначения.
DateTimeKind.Utc Does not equal TimeZoneInfo.Utc.Id. Создает ArgumentExceptionисключение .
DateTimeKind.Local Равно TimeZoneInfo.Local.Id. Преобразует dateTime в часовой пояс назначения.
DateTimeKind.Local Does not equal TimeZoneInfo.Local.Id. Создает ArgumentExceptionисключение .
DateTimeKind.Unspecified Любой. Преобразует dateTime в часовой пояс назначения.

Так как он использует вызовы FindSystemTimeZoneById метода , ConvertTimeBySystemTimeZoneId метод выполняет поиск без учета регистра, чтобы найти часовые пояса, соответствующие sourceTimeZoneId и destinationTimeZoneId.

Если значение dateTime параметра является неоднозначным временем в исходном часовом поясе, оно интерпретируется как стандартное время. dateTime Если параметр является недопустимым временем в исходном часовом поясе, этот метод вызывает исключение ArgumentException.

Свойству Kind возвращаемого DateTime значения присваивается значение , DateTimeKind.Unspecified если часовой пояс назначения не является часовым поясом в формате UTC, в этом случае ему присваивается значение DateTimeKind.Utc.

См. также раздел

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