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


TimeZoneInfo.ConvertTimeBySystemTimeZoneId Метод

Определение

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

Перегрузки

Имя Описание
ConvertTimeBySystemTimeZoneId(DateTime, String)

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

ConvertTimeBySystemTimeZoneId(DateTimeOffset, String)

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

ConvertTimeBySystemTimeZoneId(DateTime, String, String)

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

ConvertTimeBySystemTimeZoneId(DateTime, String)

Исходный код:
TimeZoneInfo.cs
Исходный код:
TimeZoneInfo.cs
Исходный код:
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
Значение параметра destinationTimeZone — TimeZoneInfo.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
Исходный код:
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
Исходный код:
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 Не равно TimeZoneInfo.Utc.Id. ArgumentExceptionСоздает исключение .
DateTimeKind.Local TimeZoneInfo.Local.IdРавно. dateTime Преобразуется в время целевого часового пояса.
DateTimeKind.Local Не равно TimeZoneInfo.Local.Id. ArgumentExceptionСоздает исключение .
DateTimeKind.Unspecified Любой. dateTime Преобразуется в время целевого часового пояса.

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

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

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

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

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