TimeZoneInfo.GetAmbiguousTimeOffsets Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Returnerar information om de möjliga datum och tider som ett tvetydigt datum och en tvetydig tid kan mappas till.
Överlagringar
| Name | Description |
|---|---|
| GetAmbiguousTimeOffsets(DateTime) |
Returnerar information om de möjliga datum och tider som ett tvetydigt datum och en tvetydig tid kan mappas till. |
| GetAmbiguousTimeOffsets(DateTimeOffset) |
Returnerar information om de möjliga datum och tider som ett tvetydigt datum och en tvetydig tid kan mappas till. |
GetAmbiguousTimeOffsets(DateTime)
- Källa:
- TimeZoneInfo.cs
- Källa:
- TimeZoneInfo.cs
- Källa:
- TimeZoneInfo.cs
- Källa:
- TimeZoneInfo.cs
- Källa:
- TimeZoneInfo.cs
Returnerar information om de möjliga datum och tider som ett tvetydigt datum och en tvetydig tid kan mappas till.
public:
cli::array <TimeSpan> ^ GetAmbiguousTimeOffsets(DateTime dateTime);
public TimeSpan[] GetAmbiguousTimeOffsets(DateTime dateTime);
member this.GetAmbiguousTimeOffsets : DateTime -> TimeSpan[]
Public Function GetAmbiguousTimeOffsets (dateTime As DateTime) As TimeSpan()
Parametrar
- dateTime
- DateTime
Ett datum och en tid.
Returer
En matris med objekt som representerar möjliga UTC-förskjutningar (Coordinated Universal Time) som ett visst datum och en viss tid kan mappas till.
Undantag
dateTime är inte en tvetydig tid.
Exempel
I följande exempel definieras en metod med namnet ShowPossibleUtcTimes som använder GetAmbiguousTimeOffsets(DateTime) metoden för att mappa en tvetydig tid till dess möjliga motsvarande UTC-tider (Coordinated Universal Time).
private void ShowPossibleUtcTimes(DateTime ambiguousTime, TimeZoneInfo timeZone)
{
// Determine if time is ambiguous in target time zone
if (!timeZone.IsAmbiguousTime(ambiguousTime))
{
Console.WriteLine("{0} is not ambiguous in time zone {1}.",
ambiguousTime,
timeZone.DisplayName);
}
else
{
// Display time and its time zone (local, UTC, or indicated by timeZone argument)
string originalTimeZoneName;
if (ambiguousTime.Kind == DateTimeKind.Utc)
originalTimeZoneName = "UTC";
else if (ambiguousTime.Kind == DateTimeKind.Local)
originalTimeZoneName = "local time";
else
originalTimeZoneName = timeZone.DisplayName;
Console.WriteLine("{0} {1} maps to the following possible times:",
ambiguousTime, originalTimeZoneName);
// Get ambiguous offsets
TimeSpan[] offsets = timeZone.GetAmbiguousTimeOffsets(ambiguousTime);
// Handle times not in time zone of timeZone argument
// Local time where timeZone is not local zone
if ((ambiguousTime.Kind == DateTimeKind.Local) && ! timeZone.Equals(TimeZoneInfo.Local))
ambiguousTime = TimeZoneInfo.ConvertTime(ambiguousTime, TimeZoneInfo.Local, timeZone);
// UTC time where timeZone is not UTC zone
else if ((ambiguousTime.Kind == DateTimeKind.Utc) && ! timeZone.Equals(TimeZoneInfo.Utc))
ambiguousTime = TimeZoneInfo.ConvertTime(ambiguousTime, TimeZoneInfo.Utc, timeZone);
// Display each offset and its mapping to UTC
foreach (TimeSpan offset in offsets)
{
if (offset.Equals(timeZone.BaseUtcOffset))
Console.WriteLine("If {0} is {1}, {2} UTC", ambiguousTime, timeZone.StandardName, ambiguousTime - offset);
else
Console.WriteLine("If {0} is {1}, {2} UTC", ambiguousTime, timeZone.DaylightName, ambiguousTime - offset);
}
}
}
let showPossibleUtcTimes (ambiguousTime: DateTime) (timeZone: TimeZoneInfo) =
// Determine if time is ambiguous in target time zone
if not (timeZone.IsAmbiguousTime ambiguousTime) then
printfn $"{ambiguousTime} is not ambiguous in time zone {timeZone.DisplayName}."
else
// Display time and its time zone (local, UTC, or indicated by timeZone argument)
let originalTimeZoneName =
match ambiguousTime.Kind with
| DateTimeKind.Utc -> "UTC"
| DateTimeKind.Local -> "local time"
| _ -> timeZone.DisplayName
printfn $"{ambiguousTime} {originalTimeZoneName} maps to the following possible times:"
// Get ambiguous offsets
let offsets = timeZone.GetAmbiguousTimeOffsets ambiguousTime
// Handle times not in time zone of timeZone argument
// Local time where timeZone is not local zone
let ambiguousTime =
if (ambiguousTime.Kind = DateTimeKind.Local) && not (timeZone.Equals TimeZoneInfo.Local) then
TimeZoneInfo.ConvertTime(ambiguousTime, TimeZoneInfo.Local, timeZone)
// UTC time where timeZone is not UTC zone
elif (ambiguousTime.Kind = DateTimeKind.Utc) && not (timeZone.Equals TimeZoneInfo.Utc) then
TimeZoneInfo.ConvertTime(ambiguousTime, TimeZoneInfo.Utc, timeZone)
else
ambiguousTime
// Display each offset and its mapping to UTC
for offset in offsets do
if offset.Equals timeZone.BaseUtcOffset then
printfn $"If {ambiguousTime} is {timeZone.StandardName}, {ambiguousTime - offset} UTC"
else
printfn $"If {ambiguousTime} is {timeZone.DaylightName}, {ambiguousTime - offset} UTC"
Private Sub ShowPossibleUtcTimes(ambiguousTime As Date, timeZone As TimeZoneInfo)
' Determine if time is ambiguous in target time zone
If Not timeZone.IsAmbiguousTime(ambiguousTime) Then
Console.WriteLine("{0} is not ambiguous in time zone {1}.", _
ambiguousTime, _
timeZone.DisplayName)
Else
' Display time and its time zone (local, UTC, or indicated by timeZone argument)
Dim originalTimeZoneName As String
If ambiguousTime.Kind = DateTimeKind.Utc Then
originalTimeZoneName = "UTC"
ElseIf ambiguousTime.Kind = DateTimeKind.Local Then
originalTimeZoneName = "local time"
Else
originalTimeZoneName = timeZone.DisplayName
End If
Console.WriteLine("{0} {1} maps to the following possible times:", _
ambiguousTime, originalTimeZoneName)
' Get ambiguous offsets
Dim offsets() As TimeSpan = timeZone.GetAmbiguousTimeOffsets(ambiguousTime)
' Handle times not in time zone of timeZone argument
' Local time where timeZone is not local zone
If (ambiguousTime.Kind = DateTimeKind.Local) And Not timeZone.Equals(TimeZoneInfo.Local) Then
ambiguousTime = TimeZoneInfo.ConvertTime(ambiguousTime, TimeZoneInfo.Local, timeZone)
' UTC time where timeZone is not UTC zone
ElseIf (ambiguousTime.Kind = DateTimeKind.Utc) And Not timeZone.Equals(TimeZoneInfo.Utc) Then
ambiguousTime = TimeZoneInfo.ConvertTime(ambiguousTime, TimeZoneInfo.Utc, timeZone)
End If
' Display each offset and its mapping to UTC
For Each offset As TimeSpan In offsets
If offset.Equals(timeZone.BaseUtcOffset) Then
Console.WriteLine("If {0} is {1}, {2} UTC", ambiguousTime, timeZone.StandardName, ambiguousTime - offset)
Else
Console.WriteLine("If {0} is {1}, {2} UTC", ambiguousTime, timeZone.DaylightName, ambiguousTime - offset)
End If
Next
End If
End Sub
Metoden kan sedan anropas med hjälp av kod, till exempel följande:
Console.WriteLine();
ShowPossibleUtcTimes(new DateTime(2007, 11, 4, 1, 0, 0),
TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"));
Console.WriteLine();
ShowPossibleUtcTimes(new DateTime(2007, 11, 4, 01, 00, 00, DateTimeKind.Local),
TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"));
Console.WriteLine();
ShowPossibleUtcTimes(new DateTime(2007, 11, 4, 00, 00, 00, DateTimeKind.Local),
TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"));
Console.WriteLine();
ShowPossibleUtcTimes(new DateTime(2007, 11, 4, 01, 00, 00, DateTimeKind.Unspecified),
TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"));
Console.WriteLine();
ShowPossibleUtcTimes(new DateTime(2007, 11, 4, 07, 00, 00, DateTimeKind.Utc),
TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"));
//
// This example produces the following output if run in the Pacific time zone:
//
// 11/4/2007 1:00:00 AM (GMT-06:00) Central Time (US & Canada) maps to the following possible times:
// If 11/4/2007 1:00:00 AM is Central Standard Time, 11/4/2007 7:00:00 AM UTC
// If 11/4/2007 1:00:00 AM is Central Daylight Time, 11/4/2007 6:00:00 AM UTC
//
// 11/4/2007 1:00:00 AM Pacific Standard Time is not ambiguous in time zone (GMT-06:00) Central Time (US & Canada).
//
// 11/4/2007 12:00:00 AM local time maps to the following possible times:
// If 11/4/2007 1:00:00 AM is Central Standard Time, 11/4/2007 7:00:00 AM UTC
// If 11/4/2007 1:00:00 AM is Central Daylight Time, 11/4/2007 6:00:00 AM UTC
//
// 11/4/2007 1:00:00 AM (GMT-06:00) Central Time (US & Canada) maps to the following possible times:
// If 11/4/2007 1:00:00 AM is Central Standard Time, 11/4/2007 7:00:00 AM UTC
// If 11/4/2007 1:00:00 AM is Central Daylight Time, 11/4/2007 6:00:00 AM UTC
//
// 11/4/2007 7:00:00 AM UTC maps to the following possible times:
// If 11/4/2007 1:00:00 AM is Central Standard Time, 11/4/2007 7:00:00 AM UTC
// If 11/4/2007 1:00:00 AM is Central Daylight Time, 11/4/2007 6:00:00 AM UTC
//
printfn ""
showPossibleUtcTimes(DateTime(2007, 11, 4, 1, 0, 0)) (TimeZoneInfo.FindSystemTimeZoneById "Central Standard Time")
printfn ""
showPossibleUtcTimes (DateTime(2007, 11, 4, 01, 00, 00, DateTimeKind.Local)) (TimeZoneInfo.FindSystemTimeZoneById "Central Standard Time")
printfn ""
showPossibleUtcTimes (DateTime(2007, 11, 4, 00, 00, 00, DateTimeKind.Local)) (TimeZoneInfo.FindSystemTimeZoneById "Central Standard Time")
printfn ""
showPossibleUtcTimes (DateTime(2007, 11, 4, 01, 00, 00, DateTimeKind.Unspecified)) (TimeZoneInfo.FindSystemTimeZoneById "Central Standard Time")
printfn ""
showPossibleUtcTimes (DateTime(2007, 11, 4, 07, 00, 00, DateTimeKind.Utc)) (TimeZoneInfo.FindSystemTimeZoneById "Central Standard Time")
// This example produces the following output if run in the Pacific time zone:
//
// 11/4/2007 1:00:00 AM (GMT-06:00) Central Time (US & Canada) maps to the following possible times:
// If 11/4/2007 1:00:00 AM is Central Standard Time, 11/4/2007 7:00:00 AM UTC
// If 11/4/2007 1:00:00 AM is Central Daylight Time, 11/4/2007 6:00:00 AM UTC
//
// 11/4/2007 1:00:00 AM Pacific Standard Time is not ambiguous in time zone (GMT-06:00) Central Time (US & Canada).
//
// 11/4/2007 12:00:00 AM local time maps to the following possible times:
// If 11/4/2007 1:00:00 AM is Central Standard Time, 11/4/2007 7:00:00 AM UTC
// If 11/4/2007 1:00:00 AM is Central Daylight Time, 11/4/2007 6:00:00 AM UTC
//
// 11/4/2007 1:00:00 AM (GMT-06:00) Central Time (US & Canada) maps to the following possible times:
// If 11/4/2007 1:00:00 AM is Central Standard Time, 11/4/2007 7:00:00 AM UTC
// If 11/4/2007 1:00:00 AM is Central Daylight Time, 11/4/2007 6:00:00 AM UTC
//
// 11/4/2007 7:00:00 AM UTC maps to the following possible times:
// If 11/4/2007 1:00:00 AM is Central Standard Time, 11/4/2007 7:00:00 AM UTC
// If 11/4/2007 1:00:00 AM is Central Daylight Time, 11/4/2007 6:00:00 AM UTC
//
ShowPossibleUtcTimes(#11/4/2007 1:00:00#, TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"))
Console.WriteLine()
ShowPossibleUtcTimes(New Date(2007, 11, 4, 01, 00, 00, DateTimeKind.Local), _
TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"))
Console.WriteLine()
ShowPossibleUtcTimes(New Date(2007, 11, 4, 00, 00, 00, DateTimeKind.Local), _
TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"))
Console.WriteLine()
ShowPossibleUtcTimes(New Date(2007, 11, 4, 01, 00, 00, DateTimeKind.Unspecified), _
TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"))
Console.WriteLine()
ShowPossibleUtcTimes(New Date(2007, 11, 4, 07, 00, 00, DateTimeKind.Utc), _
TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"))
'
' This example produces the following output if run in the Pacific time zone:
'
' 11/4/2007 1:00:00 AM (GMT-06:00) Central Time (US & Canada) maps to the following possible times:
' If 11/4/2007 1:00:00 AM is Central Standard Time, 11/4/2007 7:00:00 AM UTC
' If 11/4/2007 1:00:00 AM is Central Daylight Time, 11/4/2007 6:00:00 AM UTC
'
' 11/4/2007 1:00:00 AM Pacific Standard Time is not ambiguous in time zone (GMT-06:00) Central Time (US & Canada).
'
' 11/4/2007 12:00:00 AM local time maps to the following possible times:
' If 11/4/2007 1:00:00 AM is Central Standard Time, 11/4/2007 7:00:00 AM UTC
' If 11/4/2007 1:00:00 AM is Central Daylight Time, 11/4/2007 6:00:00 AM UTC
'
' 11/4/2007 1:00:00 AM (GMT-06:00) Central Time (US & Canada) maps to the following possible times:
' If 11/4/2007 1:00:00 AM is Central Standard Time, 11/4/2007 7:00:00 AM UTC
' If 11/4/2007 1:00:00 AM is Central Daylight Time, 11/4/2007 6:00:00 AM UTC
'
' 11/4/2007 7:00:00 AM UTC maps to the following possible times:
' If 11/4/2007 1:00:00 AM is Central Standard Time, 11/4/2007 7:00:00 AM UTC
' If 11/4/2007 1:00:00 AM is Central Daylight Time, 11/4/2007 6:00:00 AM UTC
Kommentarer
Det exakta beteendet för den här metoden beror på relationen mellan Kind egenskapen och TimeZoneInfo objektet, vilket visas i följande tabell.
| Objekttyp för TimeZoneInfo | Typegenskapsvärde | Behavior |
|---|---|---|
| TimeZoneInfo.Local | DateTimeKind.Local eller DateTimeKind.Unspecified | Returnerar tvetydiga tidsförskjutningar för dateTime. |
| TimeZoneInfo.Local | DateTimeKind.Utc | Konverterar dateTime till den lokala tiden och returnerar sedan tvetydiga tidsförskjutningar för den tiden. |
| TimeZoneInfo.Utc | Valfritt värde. | Kastar en ArgumentException. |
| Alla andra tidszoner. | Local eller DateTimeKind.Utc | Konverterar dateTime till den angivna tidszonen och avgör sedan om den tiden är tvetydig. |
| Alla andra tidszoner. | DateTimeKind.Unspecified | Avgör om dateTime det är tvetydigt i den angivna tidszonen. |
Ordningen på TimeSpan objekt i matrisen som returneras av den här metoden är odefinierad. Du kan dock avgöra vilket element som representerar en förskjutning från tidszonens standardtid genom att jämföra dess värde med tidszonens BaseUtcOffset egenskap. Information om hur du mappar en tvetydig tid till en tidszons standardtid finns i How to: Resolve Ambiguous Times (Så här gör du: Lösa tvetydiga tider).
Se även
Gäller för
GetAmbiguousTimeOffsets(DateTimeOffset)
- Källa:
- TimeZoneInfo.cs
- Källa:
- TimeZoneInfo.cs
- Källa:
- TimeZoneInfo.cs
- Källa:
- TimeZoneInfo.cs
- Källa:
- TimeZoneInfo.cs
Returnerar information om de möjliga datum och tider som ett tvetydigt datum och en tvetydig tid kan mappas till.
public:
cli::array <TimeSpan> ^ GetAmbiguousTimeOffsets(DateTimeOffset dateTimeOffset);
public TimeSpan[] GetAmbiguousTimeOffsets(DateTimeOffset dateTimeOffset);
member this.GetAmbiguousTimeOffsets : DateTimeOffset -> TimeSpan[]
Public Function GetAmbiguousTimeOffsets (dateTimeOffset As DateTimeOffset) As TimeSpan()
Parametrar
- dateTimeOffset
- DateTimeOffset
Ett datum och en tid.
Returer
En matris med objekt som representerar möjliga UTC-förskjutningar (Coordinated Universal Time) som ett visst datum och en viss tid kan mappas till.
Undantag
dateTimeOffset är inte en tvetydig tid.
Kommentarer
Det exakta beteendet för den här metoden beror på relationen mellan parameterns OffsetdateTimeOffset egenskap och TimeZoneInfo objektet. Om värdet för Offset egenskapen motsvarar den aktuella tidszonens möjliga förskjutningar från Coordinated Universal Time (UTC) för det datumet och tiden returnerar metoden möjliga förskjutningar. Annars konverteras dateTimeOffset den till tiden i den aktuella tidszonen och returnerar sedan möjliga förskjutningar av det datumet och tiden.
Ordningen på TimeSpan objekt i matrisen som returneras av den här metoden är odefinierad. Du kan dock avgöra vilket element som representerar en förskjutning från tidszonens standardtid genom att jämföra dess värde med tidszonens BaseUtcOffset egenskap. Information om hur du mappar en tvetydig tid till en tidszons standardtid finns i How to: Resolve Ambiguous Times (Så här gör du: Lösa tvetydiga tider).
Se även
- IsAmbiguousTime(DateTime)
- Anvisningar: Lösa tvetydiga tider
- Anvisningar: Låt användare lösa tvetydiga tider