Прочитать на английском

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


TimeZoneInfo.ConvertTimeToUtc Метод

Определение

Преобразует дату и время в формат UTC.

Перегрузки

ConvertTimeToUtc(DateTime)

Преобразует указанные дату и время в формат UTC.

ConvertTimeToUtc(DateTime, TimeZoneInfo)

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

ConvertTimeToUtc(DateTime)

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

Преобразует указанные дату и время в формат UTC.

C#
public static DateTime ConvertTimeToUtc (DateTime dateTime);

Параметры

dateTime
DateTime

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

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

Время в формате UTC, соответствующее значению параметра dateTime. Свойству Kind значения DateTime всегда присваивается значение Utc.

Исключения

TimeZoneInfo.Local.IsInvalidDateTime( dateTime ) возвращает true.

Примеры

В следующем примере показано преобразование значений времени со Kind свойством DateTimeKind.Utc, DateTimeKind.Localи DateTimeKind.Unspecifiedсоответственно. Он также иллюстрирует преобразование неоднозначного и недопустимого времени.

C#
DateTime datNowLocal = DateTime.Now;
Console.WriteLine("Converting {0}, Kind {1}:", datNowLocal, datNowLocal.Kind);
Console.WriteLine("   ConvertTimeToUtc: {0}, Kind {1}", TimeZoneInfo.ConvertTimeToUtc(datNowLocal), TimeZoneInfo.ConvertTimeToUtc(datNowLocal).Kind);
Console.WriteLine();

DateTime datNowUtc = DateTime.UtcNow;
Console.WriteLine("Converting {0}, Kind {1}", datNowUtc, datNowUtc.Kind);
Console.WriteLine("   ConvertTimeToUtc: {0}, Kind {1}", TimeZoneInfo.ConvertTimeToUtc(datNowUtc), TimeZoneInfo.ConvertTimeToUtc(datNowUtc).Kind);
Console.WriteLine();

DateTime datNow = new DateTime(2007, 10, 26, 13, 32, 00);
Console.WriteLine("Converting {0}, Kind {1}", datNow, datNow.Kind);
Console.WriteLine("   ConvertTimeToUtc: {0}, Kind {1}", TimeZoneInfo.ConvertTimeToUtc(datNow), TimeZoneInfo.ConvertTimeToUtc(datNow).Kind);
Console.WriteLine();

DateTime datAmbiguous = new DateTime(2007, 11, 4, 1, 30, 00);    
Console.WriteLine("Converting {0}, Kind {1}, Ambiguous {2}", datAmbiguous, datAmbiguous.Kind, TimeZoneInfo.Local.IsAmbiguousTime(datAmbiguous));
Console.WriteLine("   ConvertTimeToUtc: {0}, Kind {1}", TimeZoneInfo.ConvertTimeToUtc(datAmbiguous), TimeZoneInfo.ConvertTimeToUtc(datAmbiguous).Kind);
Console.WriteLine();

DateTime datInvalid = new DateTime(2007, 3, 11, 02, 30, 00);    
Console.WriteLine("Converting {0}, Kind {1}, Invalid {2}", datInvalid, datInvalid.Kind, TimeZoneInfo.Local.IsInvalidTime(datInvalid));
try
{
   Console.WriteLine("   ConvertTimeToUtc: {0}, Kind {1}", TimeZoneInfo.ConvertTimeToUtc(datInvalid), TimeZoneInfo.ConvertTimeToUtc(datInvalid).Kind);
}
catch (ArgumentException e)
{   
   Console.WriteLine("   {0}: Cannot convert {1} to UTC.", e.GetType().Name, datInvalid);
}
Console.WriteLine();

DateTime datNearMax = new DateTime(9999, 12, 31, 22, 00, 00);
Console.WriteLine("Converting {0}, Kind {1}", datNearMax, datNearMax.Kind);
Console.WriteLine("   ConvertTimeToUtc: {0}, Kind {1}", TimeZoneInfo.ConvertTimeToUtc(datNearMax), TimeZoneInfo.ConvertTimeToUtc(datNearMax).Kind);
Console.WriteLine();
//
// This example produces the following output if the local time zone 
// is Pacific Standard Time:
//
//    Converting 8/31/2007 2:26:28 PM, Kind Local:
//       ConvertTimeToUtc: 8/31/2007 9:26:28 PM, Kind Utc
//    
//    Converting 8/31/2007 9:26:28 PM, Kind Utc
//       ConvertTimeToUtc: 8/31/2007 9:26:28 PM, Kind Utc
//    
//    Converting 10/26/2007 1:32:00 PM, Kind Unspecified
//       ConvertTimeToUtc: 10/26/2007 8:32:00 PM, Kind Utc
//    
//    Converting 11/4/2007 1:30:00 AM, Kind Unspecified, Ambiguous True
//       ConvertTimeToUtc: 11/4/2007 9:30:00 AM, Kind Utc
//    
//    Converting 3/11/2007 2:30:00 AM, Kind Unspecified, Invalid True
//       ArgumentException: Cannot convert 3/11/2007 2:30:00 AM to UTC.
//    
//    Converting 12/31/9999 10:00:00 PM, Kind Unspecified
//       ConvertTimeToUtc: 12/31/9999 11:59:59 PM, Kind Utc
//

Комментарии

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

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

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

Примечание

Если локальный часовой пояс текущего компьютера содержит несколько правил корректировки, эта перегрузка ConvertTimeToUtc метода может возвращать результаты, отличные TimeZone.ToUniversalTime от методов и DateTime.ToUniversalTime . TimeZone.ToUniversalTime всегда применяет текущее правило корректировки к преобразованию часового пояса независимо от того, находится ли dateTime он в пределах диапазона дат. При выполнении в платформа .NET Framework 3.5 DateTime.ToUniversalTime также применяет текущее правило корректировки к преобразованию часового пояса независимо от того, находится ли dateTime он в пределах диапазона дат.

Если эквивалент в формате UTC более ранний DateTime.MinValue или более поздний DateTime.MaxValuedateTime , этот метод возвращает MinValue или MaxValueсоответственно.

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

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

.NET 9 и другие версии
Продукт Версии
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

ConvertTimeToUtc(DateTime, TimeZoneInfo)

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

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

C#
public static DateTime ConvertTimeToUtc (DateTime dateTime, TimeZoneInfo sourceTimeZone);

Параметры

dateTime
DateTime

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

sourceTimeZone
TimeZoneInfo

Часовой пояс, соответствующий значению dateTime.

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

Время в формате UTC, соответствующее значению параметра dateTime. Свойству Kind объекта DateTime всегда присваивается значение Utc.

Исключения

dateTime. Kind имеет значение Utc , а sourceTimeZone не равно Utc.

-или-

dateTime. Kind имеет значение Local , а sourceTimeZone не равно Local.

-или-

sourceTimeZone .IsInvalidDateTime( dateTime ) возвращает true.

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

Примеры

Следующий пример извлекает текущую дату из локальной системы и преобразует ее в формат UTC, затем преобразуется в стандартное время в Токио и, наконец, преобразуется из стандартного времени Токио в формат UTC. Обратите внимание, что два времени в формате UTC идентичны.

C#
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

Комментарии

Kind Если свойство dateTime параметра равноDateTimeKind.Utc, а sourceTimeZone параметр равен TimeZoneInfo.Utc, этот метод возвращает dateTime без выполнения какого-либо преобразования.

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

Если эквивалент времени в формате UTC более ранний DateTime.MinValue или более поздний dateTimeDateTime.MaxValue, этот метод возвращает MinValue значение или MaxValueсоответственно.

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

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

.NET 9 и другие версии
Продукт Версии
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1