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

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


DateTimeOffset.ToOffset(TimeSpan) Метод

Определение

Преобразует значение текущего объекта DateTimeOffset в дату и время, указанные в значении смещения.

public DateTimeOffset ToOffset(TimeSpan offset);

Параметры

offset
TimeSpan

Смещение, в которое необходимо преобразовать значение DateTimeOffset.

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

Объект, равный исходному объекту DateTimeOffset (то есть, методы ToUniversalTime() этих объектов возвращают один и тот же момент времени), свойству Offset которого, однако, присвоено значение offset.

Исключения

Результирующий DateTimeOffset объект имеет значение, предшествующее DateTimeЗначению DateTimeOffset.MinValue.

-или-

Результирующий DateTimeOffset объект имеет DateTime значение позже DateTimeOffset.MaxValue.

Значение параметра offset меньше -14 часов.

-или-

Значение параметра offset больше 14 часов.

Примеры

В следующем примере показано, как использовать ToOffset метод для преобразования DateTimeOffset объекта в DateTimeOffset объект с другим смещением.

using System;

public class DateTimeOffsetConversion
{
   private static DateTimeOffset sourceTime;

   public static void Main()
   {
      DateTimeOffset targetTime;
      sourceTime = new DateTimeOffset(2007, 9, 1, 9, 30, 0,
                                      new TimeSpan(-5, 0, 0));

      // Convert to same time (return sourceTime unchanged)
      targetTime = sourceTime.ToOffset(new TimeSpan(-5, 0, 0));
      ShowDateAndTimeInfo(targetTime);

      // Convert to UTC (0 offset)
      targetTime = sourceTime.ToOffset(TimeSpan.Zero);
      ShowDateAndTimeInfo(targetTime);

      // Convert to 8 hours behind UTC
      targetTime = sourceTime.ToOffset(new TimeSpan(-8, 0, 0));
      ShowDateAndTimeInfo(targetTime);

      // Convert to 3 hours ahead of UTC
      targetTime = sourceTime.ToOffset(new TimeSpan(3, 0, 0));
      ShowDateAndTimeInfo(targetTime);
   }

   private static void ShowDateAndTimeInfo(DateTimeOffset newTime)
   {
      Console.WriteLine("{0} converts to {1}", sourceTime, newTime);
      Console.WriteLine("{0} and {1} are equal: {2}",
                        sourceTime, newTime, sourceTime.Equals(newTime));
      Console.WriteLine("{0} and {1} are identical: {2}",
                        sourceTime, newTime,
                        sourceTime.EqualsExact(newTime));
      Console.WriteLine();
   }
}
//
// The example displays the following output:
//    9/1/2007 9:30:00 AM -05:00 converts to 9/1/2007 9:30:00 AM -05:00
//    9/1/2007 9:30:00 AM -05:00 and 9/1/2007 9:30:00 AM -05:00 are equal: True
//    9/1/2007 9:30:00 AM -05:00 and 9/1/2007 9:30:00 AM -05:00 are identical: True
//
//    9/1/2007 9:30:00 AM -05:00 converts to 9/1/2007 2:30:00 PM +00:00
//    9/1/2007 9:30:00 AM -05:00 and 9/1/2007 2:30:00 PM +00:00 are equal: True
//    9/1/2007 9:30:00 AM -05:00 and 9/1/2007 2:30:00 PM +00:00 are identical: False
//
//    9/1/2007 9:30:00 AM -05:00 converts to 9/1/2007 6:30:00 AM -08:00
//    9/1/2007 9:30:00 AM -05:00 and 9/1/2007 6:30:00 AM -08:00 are equal: True
//    9/1/2007 9:30:00 AM -05:00 and 9/1/2007 6:30:00 AM -08:00 are identical: False
//
//    9/1/2007 9:30:00 AM -05:00 converts to 9/1/2007 5:30:00 PM +03:00
//    9/1/2007 9:30:00 AM -05:00 and 9/1/2007 5:30:00 PM +03:00 are equal: True
//    9/1/2007 9:30:00 AM -05:00 and 9/1/2007 5:30:00 PM +03:00 are identical: False

Комментарии

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

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

Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 2.0, 3.0, 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 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0