导出 (0) 打印
全部展开
信息
您所需的主题如下所示。但此主题未包含在此库中。

DateTimeOffset.ToOffset 方法

2013/12/13

将当前 DateTimeOffset 对象的值转换为偏移量值所指定的日期和时间。

Namespace:  System
程序集:  mscorlib(位于 mscorlib.dll 中)

public DateTimeOffset ToOffset(
	TimeSpan offset
)

参数

offset
类型: System.TimeSpan
DateTimeOffset 值所转换成的偏移量。

返回值

类型: System.DateTimeOffset
一个对象,它等于原始的 DateTimeOffset 对象(也就是说,它们的 ToUniversalTime 方法返回的时间点相同),但其 Offset 属性设置为 offset

异常条件
ArgumentException

所生成的 DateTimeOffset 对象的值 DateTime 值早于 MinValue

- 或 -

所生成的 DateTimeOffset 对象的 DateTime 值晚于 MaxValue

ArgumentOutOfRangeException

offset 小于 -14 小时。

- 或 -

offset 大于 14 小时。

ToOffset 方法是调用 TimeZoneInfo.ConvertTime(DateTimeOffset, TimeZoneInfo) 方法的一种替代方法。在知道时区的协调世界时 (UTC) 偏移量时,可以使用此方法来执行从一个时区到另一个时区的简单转换。但是,因为原始的 DateTimeOffset 对象或方法调用所返回的新 DateTimeOffset 对象都不与特定时区明显相关,所以此方法在转换过程中未应用任何时区调整规则。

下面的示例演示如何使用 ToOffset 方法将 DateTimeOffset 对象转换为具有不同偏移量的 DateTimeOffset 对象。


using System;

public class Example
{
   private static DateTimeOffset sourceTime;

   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      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(outputBlock, targetTime);

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

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

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

   private static void ShowDateAndTimeInfo(System.Windows.Controls.TextBlock outputBlock, DateTimeOffset newTime)
   {
      outputBlock.Text += String.Format("{0} converts to {1}", sourceTime, newTime) + "\n";
      outputBlock.Text += String.Format("{0} and {1} are equal: {2}",
                        sourceTime, newTime, sourceTime.Equals(newTime)) + "\n";
      outputBlock.Text += String.Format("{0} and {1} are identical: {2}",
                        sourceTime, newTime,
                        sourceTime.EqualsExact(newTime)) + "\n";
      outputBlock.Text += "\n";
   }
}
//
// 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


Windows Phone OS

受以下版本支持: 8.0, 7.1, 7.0

Windows Phone

显示:
© 2015 Microsoft