TimeZoneInfo.TransitionTime.TimeOfDay 属性

定义

获取发生时间更改的小时、分钟和秒。

public:
 property DateTime TimeOfDay { DateTime get(); };
public DateTime TimeOfDay { get; }
member this.TimeOfDay : DateTime
Public ReadOnly Property TimeOfDay As DateTime

属性值

发生时间更改的当天的时间。

示例

以下示例枚举在本地计算机上找到的时区,并显示具有调整规则的时区的转换时间信息。 时间信息包括发生时间更改的时间。

private enum WeekOfMonth
{
   First = 1,
   Second = 2,
   Third = 3,
   Fourth = 4,
   Last = 5,
}

public void GetAllTransitionTimes()
{
   ReadOnlyCollection<TimeZoneInfo> timeZones = TimeZoneInfo.GetSystemTimeZones();
   DateTimeFormatInfo dateInfo = CultureInfo.CurrentCulture.DateTimeFormat;
   
   foreach (TimeZoneInfo zone in timeZones)
   {
      Console.WriteLine("{0} transition time information:", zone.StandardName);
      TimeZoneInfo.AdjustmentRule[] adjustmentRules= zone.GetAdjustmentRules();
      
      // Indicate that time zone has no adjustment rules
      if (adjustmentRules.Length == 0)
      { 
         Console.WriteLine("   No adjustment rules defined.");
      }   
      else
      {
         // Iterate adjustment rules       
         foreach (TimeZoneInfo.AdjustmentRule adjustmentRule in adjustmentRules)
         {
            Console.WriteLine("   Adjustment rule from {0:d} to {1:d}:", 
                              adjustmentRule.DateStart, 
                              adjustmentRule.DateEnd);                                 
            
            // Get start of transition
            TimeZoneInfo.TransitionTime daylightStart = adjustmentRule.DaylightTransitionStart;
            // Display information on fixed date rule
            if (!daylightStart.IsFixedDateRule)
               Console.WriteLine("      Begins at {0:t} on the {1} {2} of {3}.", 
                              daylightStart.TimeOfDay, 
                              ((WeekOfMonth)daylightStart.Week).ToString(),  
                              daylightStart.DayOfWeek.ToString(), 
                              dateInfo.GetMonthName(daylightStart.Month));
            // Display information on floating date rule 
            else
               Console.WriteLine("      Begins at {0:t} on the {1} {2} of {3}.", 
                                 daylightStart.TimeOfDay, 
                                 ((WeekOfMonth)daylightStart.Week).ToString(),  
                                 daylightStart.DayOfWeek.ToString(), 
                                 dateInfo.GetMonthName(daylightStart.Month));
            
            // Get end of transition
            TimeZoneInfo.TransitionTime daylightEnd = adjustmentRule.DaylightTransitionEnd;
            // Display information on fixed date rule
            if (!daylightEnd.IsFixedDateRule)
               Console.WriteLine("      Ends at {0:t} on the {1} {2} of {3}.", 
                              daylightEnd.TimeOfDay, 
                              ((WeekOfMonth)daylightEnd.Week).ToString(),  
                              daylightEnd.DayOfWeek.ToString(), 
                              dateInfo.GetMonthName(daylightEnd.Month));
            // Display information on floating date rule
            else
               Console.WriteLine("      Ends at {0:t} on the {1} {2} of {3}.", 
                                 daylightStart.TimeOfDay, 
                                 ((WeekOfMonth)daylightStart.Week).ToString(),  
                                 daylightStart.DayOfWeek.ToString(), 
                                 dateInfo.GetMonthName(daylightStart.Month));
         }
      }   
   }   
}
type WeekOfMonth =
    | First = 1
    | Second = 2
    | Third = 3
    | Fourth = 4
    | Last = 5

let getAllTransitionTimes () =
    let timeZones = TimeZoneInfo.GetSystemTimeZones()
    let dateInfo = CultureInfo.CurrentCulture.DateTimeFormat
    
    for zone in timeZones do
        printfn $"{zone.StandardName} transition time information:"
        let adjustmentRules= zone.GetAdjustmentRules()
        
        // Indicate that time zone has no adjustment rules
        if adjustmentRules.Length = 0 then
            printfn "   No adjustment rules defined."
        else
            // Iterate adjustment rules       
            for adjustmentRule in adjustmentRules do
                printfn $"   Adjustment rule from {adjustmentRule.DateStart:d} to {adjustmentRule.DateEnd:d}:"                                 
                
                // Get start of transition
                let daylightStart = adjustmentRule.DaylightTransitionStart
                // Display information on fixed date rule
                if not daylightStart.IsFixedDateRule then
                    printfn $"      Begins at {daylightStart.TimeOfDay:t} on the {enum<WeekOfMonth> daylightStart.Week} {daylightStart.DayOfWeek} of {dateInfo.GetMonthName daylightStart.Month}."
                // Display information on floating date rule 
                else
                    printfn $"      Begins at {daylightStart.TimeOfDay:t} on the {enum<WeekOfMonth> daylightStart.Week} {daylightStart.DayOfWeek} of {dateInfo.GetMonthName daylightStart.Month}."
                
                // Get end of transition
                let daylightEnd = adjustmentRule.DaylightTransitionEnd
                // Display information on fixed date rule
                if not daylightEnd.IsFixedDateRule then
                    printfn $"      Ends at {daylightEnd.TimeOfDay:t} on the {enum<WeekOfMonth> daylightEnd.Week} {daylightEnd.DayOfWeek} of {dateInfo.GetMonthName daylightEnd.Month}."
                // Display information on floating date rule
                else
                    printfn $"      Ends at {daylightStart.TimeOfDay:t} on the {enum<WeekOfMonth> daylightStart.Week} {daylightStart.DayOfWeek} of {dateInfo.GetMonthName daylightStart.Month}."
Private Enum WeekOfMonth As Integer
   First = 1
   Second = 2
   Third = 3
   Fourth = 4
   Last = 5 
End Enum

Sub GetAllTransitionTimes()
   Dim timeZones As ReadOnlyCollection(Of TimeZoneInfo) = TimeZoneInfo.GetSystemTimeZones()
   For Each zone As TimeZoneInfo In timeZones
      Console.WriteLine("{0} transition time information:", zone.StandardName)
      Dim adjustmentRules() As TimeZoneInfo.AdjustmentRule = zone.GetAdjustmentRules()
      
      ' Indicate that time zone has no adjustment rules
      If adjustmentRules.Length = 0 Then 
         Console.WriteLine("   No adjustment rules defined.")
      Else
         ' Iterate adjustment rules       
         For Each adjustmentRule As TimeZoneInfo.AdjustmentRule in adjustmentRules
            Console.WriteLine("   Adjustment rule from {0:d} to {1:d}:", _
                              adjustmentRule.DateStart, _
                              adjustmentRule.DateEnd)                                 
            
            ' Get start of transition
            Dim daylightStart As TimeZoneInfo.TransitionTime = adjustmentRule.DaylightTransitionStart
            ' Display information on fixed date rule
            If Not daylightStart.IsFixedDateRule Then
               Console.WriteLine("      Begins at {0:t} on the {1} {2} of {3}.", _
                              daylightStart.TimeOfDay, _
                              CType(daylightStart.Week, WeekOfMonth).ToString(), _ 
                              daylightStart.DayOfWeek.ToString(), _
                              MonthName(daylightStart.Month))
            ' Display information on floating date rule 
            Else
               Console.WriteLine("      Begins at {0:t} on the {1} {2} of {3}.", _
                                 daylightStart.TimeOfDay, _
                                 CType(daylightStart.Week, WeekOfMonth).ToString(), _ 
                                 daylightStart.DayOfWeek.ToString(), _
                                 MonthName(daylightStart.Month))
            End If
            
            ' Get end of transition
            Dim daylightEnd As TimeZoneInfo.TransitionTime = adjustmentRule.DaylightTransitionEnd
            ' Display information on fixed date rule
            If Not daylightEnd.IsFixedDateRule Then
               Console.WriteLine("      Ends at {0:t} on the {1} {2} of {3}.", _
                              daylightEnd.TimeOfDay, _
                              CType(daylightEnd.Week, WeekOfMonth).ToString(), _ 
                              daylightEnd.DayOfWeek.ToString(), _
                              MonthName(daylightEnd.Month))
            ' Display information on floating date rule
            Else
               Console.WriteLine("      Ends at {0:t} on the {1} {2} of {3}.", _
                                 daylightStart.TimeOfDay, _
                                 CType(daylightStart.Week, WeekOfMonth).ToString(), _ 
                                 daylightStart.DayOfWeek.ToString(), _
                                 MonthName(daylightStart.Month))
            End If                     
         Next
      End If   
   Next   
End Sub

注解

对于从标准时间到夏时制的转换, TimeOfDay 值表示时区标准时间中的转换时间。 对于从夏令时到标准时间的转换,它表示时区夏令时转换的时间。

属性 TimeOfDay 仅定义时间更改的时间,而不定义其日期。 日期由固定规则更改的 MonthDay 属性确定,浮动规则更改的 MonthWeekDayOfWeek 属性确定。 忽略此值 DateTime 的日期部分;年、月和日的值始终为 1。

属性 TimeOfDay 用于固定日期和浮动日期转换。

适用于