TimeZoneInfo.GetAmbiguousTimeOffsets Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mengembalikan informasi tentang kemungkinan tanggal dan waktu yang dapat dipetakan oleh tanggal dan waktu ambigu.
Overload
GetAmbiguousTimeOffsets(DateTime) |
Mengembalikan informasi tentang kemungkinan tanggal dan waktu yang dapat dipetakan oleh tanggal dan waktu ambigu. |
GetAmbiguousTimeOffsets(DateTimeOffset) |
Mengembalikan informasi tentang kemungkinan tanggal dan waktu yang dapat dipetakan oleh tanggal dan waktu ambigu. |
GetAmbiguousTimeOffsets(DateTime)
- Sumber:
- TimeZoneInfo.cs
- Sumber:
- TimeZoneInfo.cs
- Sumber:
- TimeZoneInfo.cs
Mengembalikan informasi tentang kemungkinan tanggal dan waktu yang dapat dipetakan oleh tanggal dan waktu ambigu.
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()
Parameter
- dateTime
- DateTime
Tanggal dan waktu.
Mengembalikan
Array objek yang mewakili kemungkinan offset Waktu Universal Terkoordinasi (UTC) yang dapat dipetakan oleh tanggal dan waktu tertentu.
Pengecualian
dateTime
bukan waktu yang ambigu.
Contoh
Contoh berikut mendefinisikan metode bernama ShowPossibleUtcTimes
yang menggunakan GetAmbiguousTimeOffsets(DateTime) metode untuk memetakan waktu ambigu ke kemungkinan waktu Waktu Universal Terkoordinasi (UTC) yang sesuai.
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
Metode kemudian dapat dipanggil menggunakan kode seperti berikut:
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
Keterangan
Perilaku yang tepat dari metode ini tergantung pada hubungan antara Kind properti dan TimeZoneInfo objek , seperti yang ditunjukkan tabel berikut.
Jenis objek TimeZoneInfo | Jenis nilai properti | Aktivitas |
---|---|---|
TimeZoneInfo.Local | DateTimeKind.Local atau DateTimeKind.Unspecified | Mengembalikan offset waktu ambigu untuk dateTime . |
TimeZoneInfo.Local | DateTimeKind.Utc |
dateTime Mengonversi ke waktu lokal, lalu mengembalikan offset waktu ambigu untuk waktu tersebut. |
TimeZoneInfo.Utc | Nilai apa pun. | ArgumentExceptionMelempar . |
Zona waktu lainnya. | Local atau DateTimeKind.Utc |
dateTime Mengonversi ke zona waktu yang ditentukan, lalu menentukan apakah waktu tersebut ambigu. |
Zona waktu lainnya. | DateTimeKind.Unspecified | Menentukan apakah dateTime ambigu dalam zona waktu yang ditentukan. |
Urutan TimeSpan objek dalam array yang dikembalikan oleh metode ini tidak terdefinisi. Namun, Anda dapat menentukan elemen mana yang mewakili offset dari waktu standar zona waktu dengan membandingkan nilainya dengan properti zona BaseUtcOffset waktu. Untuk memetakan waktu ambigu ke waktu standar zona waktu, lihat Cara: Mengatasi Waktu Ambigu.
Lihat juga
Berlaku untuk
GetAmbiguousTimeOffsets(DateTimeOffset)
- Sumber:
- TimeZoneInfo.cs
- Sumber:
- TimeZoneInfo.cs
- Sumber:
- TimeZoneInfo.cs
Mengembalikan informasi tentang kemungkinan tanggal dan waktu yang dapat dipetakan oleh tanggal dan waktu ambigu.
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()
Parameter
- dateTimeOffset
- DateTimeOffset
Tanggal dan waktu.
Mengembalikan
Array objek yang mewakili kemungkinan offset Waktu Universal Terkoordinasi (UTC) yang dapat dipetakan oleh tanggal dan waktu tertentu.
Pengecualian
dateTimeOffset
bukan waktu yang ambigu.
Keterangan
Perilaku yang tepat dari metode ini tergantung pada hubungan antara Offset properti dateTimeOffset
parameter dan TimeZoneInfo objek . Jika nilai Offset properti sesuai dengan kemungkinan offset zona waktu saat ini dari Waktu Universal Terkoordinasi (UTC) untuk tanggal dan waktu tersebut, metode mengembalikan kemungkinan offset. Jika tidak, ini mengonversi dateTimeOffset
ke waktu di zona waktu saat ini, lalu mengembalikan kemungkinan offset tanggal dan waktu tersebut.
Urutan TimeSpan objek dalam array yang dikembalikan oleh metode ini tidak terdefinisi. Namun, Anda dapat menentukan elemen mana yang mewakili offset dari waktu standar zona waktu dengan membandingkan nilainya dengan properti zona BaseUtcOffset waktu. Untuk memetakan waktu ambigu ke waktu standar zona waktu, lihat Cara: Mengatasi Waktu Ambigu.
Lihat juga
- IsAmbiguousTime(DateTime)
- Cara: Mengatasi Waktu Ambigu
- Cara: Biarkan Pengguna Menyelesaikan Waktu Ambigu