TimeZoneInfo.TransitionTime.CreateFloatingDateRule(DateTime, Int32, Int32, DayOfWeek) 方法

定义

定义一个使用浮动日期规则的日期更改(即,发生在特定月份的特定星期的特定星期几的时间更改)。Defines a time change that uses a floating-date rule (that is, a time change that occurs on a specific day of a specific week of a specific month).

public:
 static TimeZoneInfo::TransitionTime CreateFloatingDateRule(DateTime timeOfDay, int month, int week, DayOfWeek dayOfWeek);
public static TimeZoneInfo.TransitionTime CreateFloatingDateRule (DateTime timeOfDay, int month, int week, DayOfWeek dayOfWeek);
static member CreateFloatingDateRule : DateTime * int * int * DayOfWeek -> TimeZoneInfo.TransitionTime
Public Shared Function CreateFloatingDateRule (timeOfDay As DateTime, month As Integer, week As Integer, dayOfWeek As DayOfWeek) As TimeZoneInfo.TransitionTime

参数

timeOfDay
DateTime

发生时间更改的时间。The time at which the time change occurs. 此参数对应于 TimeOfDay 属性。This parameter corresponds to the TimeOfDay property.

month
Int32

发生时间更改的月份。The month in which the time change occurs. 此参数对应于 Month 属性。This parameter corresponds to the Month property.

week
Int32

时间更改发生在月中的第几个星期。The week of the month in which the time change occurs. 它的值的范围是从 1 到 5,其中 5 表示该月的最后一周。Its value can range from 1 to 5, with 5 representing the last week of the month. 此参数对应于 Week 属性。This parameter corresponds to the Week property.

dayOfWeek
DayOfWeek

时间更改发生在星期几。The day of the week on which the time change occurs. 此参数对应于 DayOfWeek 属性。This parameter corresponds to the DayOfWeek property.

返回

有关时间更改的数据。Data about the time change.

例外

timeOfDay 参数具有非默认的日期组件。The timeOfDay parameter has a non-default date component.

- 或 --or- timeOfDay 参数不表示整毫秒数。The timeOfDay parameter does not represent a whole number of milliseconds.

- 或 --or- timeOfDay 参数的 Kind 属性不是 UnspecifiedThe timeOfDay parameter's Kind property is not Unspecified.

month 小于 1 或大于 12。month is less than 1 or greater than 12.

- 或 --or- week 小于 1 或大于 5。week is less than 1 or greater than 5.

- 或 --or- dayOfWeek 参数不是 DayOfWeek 枚举的成员。The dayOfWeek parameter is not a member of the DayOfWeek enumeration.

示例

下面的示例使用固定日期规则和浮动日期规则为虚时区创建时区转换。The following example creates time zone transitions for an imaginary time zone by using both a fixed-date rule and a floating-date rule. 浮动日期规则定义从凌晨2:00 开始的时区调整。The floating-date rule defines a time zone adjustment that starts at 2:00 A.M. 在3月的最后一个星期日结束,结束于凌晨3:00。on the last Sunday of March and ends at 3:00 A.M. 1956年10月第四个星期日。on the fourth Sunday in October for the years 1956 onward.

// Declare necessary TimeZoneInfo.AdjustmentRule objects for time zone
TimeZoneInfo imaginaryTZ;
TimeSpan delta = new TimeSpan(1, 0, 0);
TimeZoneInfo.AdjustmentRule adjustment;
List<TimeZoneInfo.AdjustmentRule> adjustmentList = new List<TimeZoneInfo.AdjustmentRule>();
// Declare transition time variables to hold transition time information
TimeZoneInfo.TransitionTime transitionRuleStart, transitionRuleEnd;
                      
// Define a fictitious new time zone consisting of fixed and floating adjustment rules 
// Define fixed rule (for 1900-1955)
transitionRuleStart = TimeZoneInfo.TransitionTime.CreateFixedDateRule(new DateTime(1, 1, 1, 2, 0, 0), 3, 15);
transitionRuleEnd = TimeZoneInfo.TransitionTime.CreateFixedDateRule(new DateTime(1, 1, 1, 3, 0, 0), 11, 15);
adjustment = TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule(new DateTime(1900, 1, 1), new DateTime(1955, 12, 31), 
             delta, transitionRuleStart, transitionRuleEnd);
adjustmentList.Add(adjustment);
// Define floating rule (for 1956- )
transitionRuleStart = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(new DateTime(1, 1, 1, 2, 0, 0), 3, 5, DayOfWeek.Sunday);
transitionRuleEnd = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(new DateTime(1, 1, 1, 3, 0, 0), 10, 4, DayOfWeek.Sunday); 
adjustment = TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule(new DateTime(1956, 1, 1), DateTime.MaxValue.Date, delta, transitionRuleStart, transitionRuleEnd);
adjustmentList.Add(adjustment); 

// Create fictitious time zone   
imaginaryTZ = TimeZoneInfo.CreateCustomTimeZone("Fictitious Standard Time", new TimeSpan(-9, 0, 0), 
                "(GMT-09:00) Fictitious Time", "Fictitious Standard Time", 
                "Fictitious Daylight Time", adjustmentList.ToArray());
' Declare necessary TimeZoneInfo.AdjustmentRule objects for time zone
Dim imaginaryTZ As TimeZoneInfo
Dim delta As New TimeSpan(1, 0, 0)
Dim adjustment As TimeZoneInfo.AdjustmentRule
Dim adjustmentList As New List(Of TimeZoneInfo.AdjustmentRule)
' Declare transition time variables to hold transition time information
Dim transitionRuleStart, transitionRuleEnd As TimeZoneInfo.TransitionTime
                      
' Define a fictitious new time zone consisting of fixed and floating adjustment rules 
' Define fixed rule (for 1900-1955)
transitionRuleStart = TimeZoneInfo.TransitionTime.CreateFixedDateRule(#2:00:00AM#, 3, 15)
transitionRuleEnd = TimeZoneInfo.TransitionTime.CreateFixedDateRule(#3:00:00AM#, 11, 15)
adjustment = TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule(#1/1/1900#, #12/31/1955#, delta, _
             transitionRuleStart, transitionRuleEnd)
adjustmentList.Add(adjustment)
' Define floating rule (for 1956- )
transitionRuleStart = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(#02:00:00AM#, 3, 5, DayOfWeek.Sunday)
transitionRuleEnd = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(#03:00:00AM#, 10, 4, DayOfWeek.Sunday) 
adjustment = TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule(#01/01/1956#, Date.MaxValue.Date, delta, transitionRuleStart, transitionRuleEnd)
adjustmentList.Add(adjustment) 

' Create fictitious time zone   
imaginaryTZ = TimeZoneInfo.CreateCustomTimeZone("Fictitious Standard Time", New TimeSpan(-9, 0, 0), _
                "(GMT-09:00) Fictitious Time", "Fictitious Standard Time", _
                "Fictitious Daylight Time", adjustmentList.ToArray())

注解

此方法创建一个浮动日期规则(即在特定月份的特定周的特定一天发生的时间更改)。This method creates a floating-date rule (that is, a time change that occurs on a specific day of a specific week of a specific month). 例如,10月最后一个星期日发生的时间更改采用浮动日期规则。For example, a time change that occurs on the last Sunday of October follows a floating-date rule.

对于从标准时间到夏令时的转换,timeOfDay 参数表示时区的标准时间中的转换时间。For transitions from standard time to daylight saving time, the timeOfDay argument represents the time of the transition in the time zone's standard time. 对于从夏时制转换到标准时间的转换,它表示时区夏令时的转换时间。For transitions from daylight saving time to standard time, it represents the time of the transition in the time zone's daylight saving time. 请注意,这是一个 DateTime 值,其年、月和日期值都必须等于1。Note that this is a DateTime value whose year, month, and date values must all equal 1.

适用于