Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Bár a DateTimeOffset struktúra nagyobb időzóna-tudatosságot biztosít, mint a DateTime struktúra, DateTime a paramétereket gyakrabban használják metódushívásokban. Ennek a megközelítésnek köszönhetően fontos az, hogy képesek legyünk a DateTimeOffset értékeket DateTime értékekké alakítani, és fordítva. Ez a cikk bemutatja, hogyan hajthatja végre ezeket a konverziókat oly módon, hogy a lehető legtöbb időzóna-információt megőrizze.
Megjegyzés
Mind a DateTime típusok, mind a DateTimeOffset típusok bizonyos korlátozásokkal rendelkeznek, amikor időzónákban jelölik az időzónákat. A tulajdonságával KindDateTime csak az egyezményes világidőt (UTC) és a rendszer helyi időzónáját képes tükrözni. DateTimeOffset az idő UTC-től való eltolódását mutatja, de nem ad információt arról az időzónáról, amelyhez ez az eltolódás tartozik. Az időértékekről és az időzónák támogatásáról további információt a DateTime, a DateTimeOffset, a TimeSpan és a TimeZoneInfo közötti választás című témakörben talál.
Konvertálás DateTime-ról DateTimeOffset-ra
A DateTimeOffset struktúra két egyenértékű módszert biztosít a DateTimeDateTimeOffset legtöbb átalakításhoz megfelelő átalakítás végrehajtására:
A DateTimeOffset konstruktor, amely egy DateTimeOffset érték alapján hoz létre egy új DateTime objektumot.
Az implicit konverziós operátor, amely lehetővé teszi, hogy értéket rendeljen DateTime egy DateTimeOffset objektumhoz.
UTC és helyi DateTime értékek esetén az Offset eredményül kapott DateTimeOffset érték tulajdonsága pontosan tükrözi az UTC vagy a helyi időzóna eltolását. Az alábbi kód például az UTC-időt az azzal egyenértékű DateTimeOffset értékké alakítja:
DateTime utcTime1 = new DateTime(2008, 6, 19, 7, 0, 0);
utcTime1 = DateTime.SpecifyKind(utcTime1, DateTimeKind.Utc);
DateTimeOffset utcTime2 = utcTime1;
Console.WriteLine($"Converted {utcTime1} {utcTime1.Kind} to a DateTimeOffset value of {utcTime2}");
// This example displays the following output to the console:
// Converted 6/19/2008 7:00:00 AM Utc to a DateTimeOffset value of 6/19/2008 7:00:00 AM +00:00
Dim utcTime1 As Date = Date.SpecifyKind(#06/19/2008 7:00AM#, _
DateTimeKind.Utc)
Dim utcTime2 As DateTimeOffset = utcTime1
Console.WriteLine("Converted {0} {1} to a DateTimeOffset value of {2}", _
utcTime1, _
utcTime1.Kind.ToString(), _
utcTime2)
' This example displays the following output to the console:
' Converted 6/19/2008 7:00:00 AM Utc to a DateTimeOffset value of 6/19/2008 7:00:00 AM +00:00
Ebben az esetben a utcTime2 változónak az eltolása 00:00. Hasonlóképpen, a következő kód a helyi időt az azzal egyenértékű DateTimeOffset értékké alakítja. Az átalakítás az Egyesült Államok csendes-óceáni standard időzónájában fut:
DateTime localTime1 = new DateTime(2008, 6, 19, 7, 0, 0);
localTime1 = DateTime.SpecifyKind(localTime1, DateTimeKind.Local);
DateTimeOffset localTime2 = localTime1;
Console.WriteLine($"Converted {localTime1} {localTime1.Kind} to a DateTimeOffset value of {localTime2}");
// This example displays the following output to the console:
// Converted 6/19/2008 7:00:00 AM Local to a DateTimeOffset value of 6/19/2008 7:00:00 AM -07:00
Dim localTime1 As Date = Date.SpecifyKind(#06/19/2008 7:00AM#, DateTimeKind.Local)
Dim localTime2 As DateTimeOffset = localTime1
Console.WriteLine("Converted {0} {1} to a DateTimeOffset value of {2}", _
localTime1, _
localTime1.Kind.ToString(), _
localTime2)
' This example displays the following output to the console:
' Converted 6/19/2008 7:00:00 AM Local to a DateTimeOffset value of 6/19/2008 7:00:00 AM -07:00
Azon értékek esetében DateTime, amelyeknek Kind tulajdonsága DateTimeKind.Unspecified, ez a két átalakítási módszer olyan DateTimeOffset értéket hoz létre, amely eltolódása megegyezik a helyi időzónáéval. Az átalakítás az alábbi példában látható, amely az Egyesült Államok csendes-óceáni standard időzónájában fut:
DateTime time1 = new DateTime(2008, 6, 19, 7, 0, 0); // Kind is DateTimeKind.Unspecified
DateTimeOffset time2 = time1;
Console.WriteLine($"Converted {time1} {time1.Kind} to a DateTimeOffset value of {time2}");
// This example displays the following output to the console:
// Converted 6/19/2008 7:00:00 AM Unspecified to a DateTimeOffset value of 6/19/2008 7:00:00 AM -07:00
Dim time1 As Date = #06/19/2008 7:00AM# ' Kind is DateTimeKind.Unspecified
Dim time2 As DateTimeOffset = time1
Console.WriteLine("Converted {0} {1} to a DateTimeOffset value of {2}", _
time1, _
time1.Kind.ToString(), _
time2)
' This example displays the following output to the console:
' Converted 6/19/2008 7:00:00 AM Unspecified to a DateTimeOffset value of 6/19/2008 7:00:00 AM -07:00
Ha az érték a DateTime helyi időzónától vagy UTC-től eltérő helyen jeleníti meg a dátumot és az időt, a túlterhelt DateTimeOffset konstruktor meghívásával átalakíthatja értékkéDateTimeOffset, és megőrizheti az időzóna adatait. Az alábbi példa például létrehoz egy DateTimeOffset , a központi téli időt tükröző objektumot:
DateTime time1 = new DateTime(2008, 6, 19, 7, 0, 0); // Kind is DateTimeKind.Unspecified
try
{
DateTimeOffset time2 = new DateTimeOffset(time1,
TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time").GetUtcOffset(time1));
Console.WriteLine($"Converted {time1} {time1.Kind} to a DateTime value of {time2}");
}
// Handle exception if time zone is not defined in registry
catch (TimeZoneNotFoundException)
{
Console.WriteLine("Unable to identify target time zone for conversion.");
}
// This example displays the following output to the console:
// Converted 6/19/2008 7:00:00 AM Unspecified to a DateTime value of 6/19/2008 7:00:00 AM -05:00
Dim time1 As Date = #06/19/2008 7:00AM# ' Kind is DateTimeKind.Unspecified
Try
Dim time2 As New DateTimeOffset(time1, _
TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time").GetUtcOffset(time1))
Console.WriteLine("Converted {0} {1} to a DateTime value of {2}", _
time1, _
time1.Kind.ToString(), _
time2)
' Handle exception if time zone is not defined in registry
Catch e As TimeZoneNotFoundException
Console.WriteLine("Unable to identify target time zone for conversion.")
End Try
' This example displays the following output to the console:
' Converted 6/19/2008 7:00:00 AM Unspecified to a DateTime value of 6/19/2008 7:00:00 AM -05:00
A konstruktor túlterhelésének második paramétere egy TimeSpan objektum, amely az idő UTC-től való eltolódását jelöli. Kérje le az TimeZoneInfo.GetUtcOffset(DateTime) idő megfelelő időzónájának metódusának meghívásával. A metódus egyetlen paramétere az az DateTime érték, amely az átalakítandó dátumot és időt jelöli. Ha az időzóna támogatja a nyári időszámítást, ez a paraméter lehetővé teszi a metódus számára az adott dátum és idő megfelelő eltolásának meghatározását.
Konvertálás DateTimeOffsetről DateTime-ra
A DateTime tulajdonságot leggyakrabban átalakításra DateTimeOffsetDateTime használják. Visszaad azonban egy DateTime értéket, amelynek Kind a tulajdonsága az Unspecified, ahogy az alábbi példa szemlélteti:
DateTime baseTime = new DateTime(2008, 6, 19, 7, 0, 0);
DateTimeOffset sourceTime;
DateTime targetTime;
// Convert UTC to DateTime value
sourceTime = new DateTimeOffset(baseTime, TimeSpan.Zero);
targetTime = sourceTime.DateTime;
Console.WriteLine($"{sourceTime} converts to {targetTime} {targetTime.Kind}");
// Convert local time to DateTime value
sourceTime = new DateTimeOffset(baseTime,
TimeZoneInfo.Local.GetUtcOffset(baseTime));
targetTime = sourceTime.DateTime;
Console.WriteLine($"{sourceTime} converts to {targetTime} {targetTime.Kind}");
// Convert Central Standard Time to a DateTime value
try
{
TimeSpan offset = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time").GetUtcOffset(baseTime);
sourceTime = new DateTimeOffset(baseTime, offset);
targetTime = sourceTime.DateTime;
Console.WriteLine($"{sourceTime} converts to {targetTime} {targetTime.Kind}");
}
catch (TimeZoneNotFoundException)
{
Console.WriteLine("Unable to create DateTimeOffset based on U.S. Central Standard Time.");
}
// This example displays the following output to the console:
// 6/19/2008 7:00:00 AM +00:00 converts to 6/19/2008 7:00:00 AM Unspecified
// 6/19/2008 7:00:00 AM -07:00 converts to 6/19/2008 7:00:00 AM Unspecified
// 6/19/2008 7:00:00 AM -05:00 converts to 6/19/2008 7:00:00 AM Unspecified
Const baseTime As Date = #06/19/2008 7:00AM#
Dim sourceTime As DateTimeOffset
Dim targetTime As Date
' Convert UTC to DateTime value
sourceTime = New DateTimeOffset(baseTime, TimeSpan.Zero)
targetTime = sourceTime.DateTime
Console.WriteLine("{0} converts to {1} {2}", _
sourceTime, _
targetTime, _
targetTime.Kind.ToString())
' Convert local time to DateTime value
sourceTime = New DateTimeOffset(baseTime, _
TimeZoneInfo.Local.GetUtcOffset(baseTime))
targetTime = sourceTime.DateTime
Console.WriteLine("{0} converts to {1} {2}", _
sourceTime, _
targetTime, _
targetTime.Kind.ToString())
' Convert Central Standard Time to a DateTime value
Try
Dim offset As TimeSpan = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time").GetUtcOffset(baseTime)
sourceTime = New DateTimeOffset(baseTime, offset)
targetTime = sourceTime.DateTime
Console.WriteLine("{0} converts to {1} {2}", _
sourceTime, _
targetTime, _
targetTime.Kind.ToString())
Catch e As TimeZoneNotFoundException
Console.WriteLine("Unable to create DateTimeOffset based on U.S. Central Standard Time.")
End Try
' This example displays the following output to the console:
' 6/19/2008 7:00:00 AM +00:00 converts to 6/19/2008 7:00:00 AM Unspecified
' 6/19/2008 7:00:00 AM -07:00 converts to 6/19/2008 7:00:00 AM Unspecified
' 6/19/2008 7:00:00 AM -05:00 converts to 6/19/2008 7:00:00 AM Unspecified
Az előző példa azt mutatja, hogy az DateTimeOffset érték UTC-hez való viszonyára vonatkozó információk elvesznek a tulajdonság használata során DateTime történő átalakítás során. Ez a viselkedés az UTC-időnek vagy a rendszer helyi idejének megfelelő értékeket is befolyásolja DateTimeOffset , mivel a DateTime struktúra csak a tulajdonságában lévő két időzónát Kind tükrözi.
Ha a lehető legtöbb időzóna-információt szeretné megőrizni
UTC idő konvertálása
Ha azt szeretné jelezni, hogy a konvertált DateTime érték az UTC idő, lekérheti a DateTimeOffset.UtcDateTime tulajdonság értékét. A tulajdonságtól DateTime kétféleképpen tér el:
Olyan DateTime értéket ad vissza, amelynek Kind tulajdonsága Utc.
Ha a Offset tulajdonság értéke nem egyenlő TimeSpan.Zero, az időpontot UTC-vé alakítja.
Megjegyzés
Ha az alkalmazás megköveteli, hogy a konvertált DateTime értékek egyértelműen azonosítsanak egy adott időpontot, fontolja meg a tulajdonság használatát az DateTimeOffset.UtcDateTime összes DateTimeOffsetDateTime konvertálás kezelésére.
Az alábbi kód a UtcDateTime tulajdonság használatával konvertál egy DateTimeOffset értéket, amelynek eltolása egyenlő TimeSpan.Zero-vel egy DateTime értékké.
DateTimeOffset utcTime1 = new DateTimeOffset(2008, 6, 19, 7, 0, 0, TimeSpan.Zero);
DateTime utcTime2 = utcTime1.UtcDateTime;
Console.WriteLine($"{utcTime1} converted to {utcTime2} {utcTime2.Kind}");
// The example displays the following output to the console:
// 6/19/2008 7:00:00 AM +00:00 converted to 6/19/2008 7:00:00 AM Utc
Dim utcTime1 As New DateTimeOffset(#06/19/2008 7:00AM#, TimeSpan.Zero)
Dim utcTime2 As Date = utcTime1.UtcDateTime
Console.WriteLine("{0} converted to {1} {2}", _
utcTime1, _
utcTime2, _
utcTime2.Kind.ToString())
' The example displays the following output to the console:
' 6/19/2008 7:00:00 AM +00:00 converted to 6/19/2008 7:00:00 AM Utc
Az alábbi kód a tulajdonságot használja az UtcDateTime időzóna-átalakítás és a típuskonverzió végrehajtásához egy DateTimeOffset értéken:
DateTimeOffset originalTime = new DateTimeOffset(2008, 6, 19, 7, 0, 0, new TimeSpan(5, 0, 0));
DateTime utcTime = originalTime.UtcDateTime;
Console.WriteLine($"{originalTime} converted to {utcTime} {utcTime.Kind}");
// The example displays the following output to the console:
// 6/19/2008 7:00:00 AM +05:00 converted to 6/19/2008 2:00:00 AM Utc
Dim originalTime As New DateTimeOffset(#6/19/2008 7:00AM#, _
New TimeSpan(5, 0, 0))
Dim utcTime As Date = originalTime.UtcDateTime
Console.WriteLine("{0} converted to {1} {2}", _
originalTime, _
utcTime, _
utcTime.Kind.ToString())
' The example displays the following output to the console:
' 6/19/2008 7:00:00 AM +05:00 converted to 6/19/2008 2:00:00 AM Utc
Helyi idő konvertálása
Ha azt szeretné jelezni, hogy egy DateTimeOffset érték a helyi időt jelöli, a DateTime tulajdonság által visszaadott DateTimeOffset.DateTime értéket átadhatja a static (Shared Visual Basic) SpecifyKind metódusnak. A metódus az első paraméterként megadott dátumot és időt adja vissza, de a tulajdonságot a Kind második paraméter által megadott értékre állítja. A következő kód a metódust használja egy SpecifyKindDateTimeOffset olyan érték konvertálásához, amelynek eltolása megfelel a helyi időzónáénak:
DateTime sourceDate = new DateTime(2008, 6, 19, 7, 0, 0);
DateTimeOffset utcTime1 = new DateTimeOffset(sourceDate,
TimeZoneInfo.Local.GetUtcOffset(sourceDate));
DateTime utcTime2 = utcTime1.DateTime;
if (utcTime1.Offset.Equals(TimeZoneInfo.Local.GetUtcOffset(utcTime1.DateTime)))
utcTime2 = DateTime.SpecifyKind(utcTime2, DateTimeKind.Local);
Console.WriteLine($"{utcTime1} converted to {utcTime2} {utcTime2.Kind}");
// The example displays the following output to the console:
// 6/19/2008 7:00:00 AM -07:00 converted to 6/19/2008 7:00:00 AM Local
Dim sourceDate As Date = #06/19/2008 7:00AM#
Dim utcTime1 As New DateTimeOffset(sourceDate, _
TimeZoneInfo.Local.GetUtcOffset(sourceDate))
Dim utcTime2 As Date = utcTime1.DateTime
If utcTime1.Offset.Equals(TimeZoneInfo.Local.GetUtcOffset(utcTime1.DateTime)) Then
utcTime2 = DateTime.SpecifyKind(utcTime2, DateTimeKind.Local)
End If
Console.WriteLine("{0} converted to {1} {2}", _
utcTime1, _
utcTime2, _
utcTime2.Kind.ToString())
' The example displays the following output to the console:
' 6/19/2008 7:00:00 AM -07:00 converted to 6/19/2008 7:00:00 AM Local
A tulajdonság használatával DateTimeOffset.LocalDateTime is átalakíthat egy DateTimeOffset értéket helyi DateTime értékké. A Kind visszaadott DateTime érték tulajdonsága.Local Az alábbi kód a DateTimeOffset.LocalDateTime tulajdonságot használja egy DateTimeOffset olyan érték konvertálásakor, amelynek eltolása megfelel a helyi időzónáénak:
DateTime sourceDate = new DateTime(2008, 6, 19, 7, 0, 0);
DateTimeOffset localTime1 = new DateTimeOffset(sourceDate,
TimeZoneInfo.Local.GetUtcOffset(sourceDate));
DateTime localTime2 = localTime1.LocalDateTime;
Console.WriteLine($"{localTime1} converted to {localTime2} {localTime2.Kind}");
// The example displays the following output to the console:
// 6/19/2008 7:00:00 AM -07:00 converted to 6/19/2008 7:00:00 AM Local
Dim sourceDate As Date = #06/19/2008 7:00AM#
Dim localTime1 As New DateTimeOffset(sourceDate, _
TimeZoneInfo.Local.GetUtcOffset(sourceDate))
Dim localTime2 As Date = localTime1.LocalDateTime
Console.WriteLine("{0} converted to {1} {2}", _
localTime1, _
localTime2, _
localTime2.Kind.ToString())
' The example displays the following output to the console:
' 6/19/2008 7:00:00 AM -07:00 converted to 6/19/2008 7:00:00 AM Local
Amikor egy értéket a DateTime tulajdonság használatával kér leDateTimeOffset.LocalDateTime, a tulajdonság tartozéka get először UTC értékké alakítja át az DateTimeOffset értéket, majd a metódus meghívásával ToLocalTime helyi idő szerint konvertálja azt. Ez a viselkedés azt jelenti, hogy lekérhet egy értéket a DateTimeOffset.LocalDateTime tulajdonságból egy időzóna-átalakítás végrehajtásához a típuskonverzióval egyidejűleg. Ez azt is jelenti, hogy a helyi időzóna kiigazítási szabályai érvényesülnek az átalakítás végrehajtásakor. Az alábbi kód bemutatja, hogy a DateTimeOffset.LocalDateTime tulajdonság milyen típusú és időzóna-átalakítást hajt végre. A mintakimenet egy csendes-óceáni időzónára (USA és Kanada) beállított géphez készült. A novemberi dátum csendes-óceáni téli idő, amely UTC-8, míg a júniusi dátum a nyári időszámítás, ami UTC-7.
DateTimeOffset originalDate;
DateTime localDate;
// Convert time originating in a different time zone
originalDate = new DateTimeOffset(2008, 6, 18, 7, 0, 0,
new TimeSpan(-5, 0, 0));
localDate = originalDate.LocalDateTime;
Console.WriteLine($"{originalDate} converted to {localDate} {localDate.Kind}");
// Convert time originating in a different time zone
// so local time zone's adjustment rules are applied
originalDate = new DateTimeOffset(2007, 11, 4, 4, 0, 0,
new TimeSpan(-5, 0, 0));
localDate = originalDate.LocalDateTime;
Console.WriteLine($"{originalDate} converted to {localDate} {localDate.Kind}");
// The example displays the following output to the console,
// when you run it on a machine that is set to Pacific Time (US & Canada):
// 6/18/2008 7:00:00 AM -05:00 converted to 6/18/2008 5:00:00 AM Local
// 11/4/2007 4:00:00 AM -05:00 converted to 11/4/2007 1:00:00 AM Local
Dim originalDate As DateTimeOffset
Dim localDate As Date
' Convert time originating in a different time zone
originalDate = New DateTimeOffset(#06/19/2008 7:00AM#, _
New TimeSpan(-5, 0, 0))
localDate = originalDate.LocalDateTime
Console.WriteLine("{0} converted to {1} {2}", _
originalDate, _
localDate, _
localDate.Kind.ToString())
' Convert time originating in a different time zone
' so local time zone's adjustment rules are applied
originalDate = New DateTimeOffset(#11/04/2007 4:00AM#, _
New TimeSpan(-5, 0, 0))
localDate = originalDate.LocalDateTime
Console.WriteLine("{0} converted to {1} {2}", _
originalDate, _
localDate, _
localDate.Kind.ToString())
' The example displays the following output to the console,
' when you run it on a machine that is set to Pacific Time (US & Canada):
' 6/18/2008 7:00:00 AM -05:00 converted to 6/18/2008 5:00:00 AM Local
' 11/4/2007 4:00:00 AM -05:00 converted to 11/4/2007 1:00:00 AM Local
Általános célú konverziós módszer
Az alábbi példa egy olyan metódust ConvertFromDateTimeOffset határoz meg, amely a DateTimeOffset értékeket DateTime értékekké alakítja. Az eltolás alapján meghatározza, hogy az DateTimeOffset érték UTC-idő, helyi idő vagy más időpont-e, és ennek megfelelően határozza meg a visszaadott dátum- és időérték tulajdonságát Kind .
static DateTime ConvertFromDateTimeOffset(DateTimeOffset dateTime)
{
if (dateTime.Offset.Equals(TimeSpan.Zero))
return dateTime.UtcDateTime;
else if (dateTime.Offset.Equals(TimeZoneInfo.Local.GetUtcOffset(dateTime.DateTime)))
return DateTime.SpecifyKind(dateTime.DateTime, DateTimeKind.Local);
else
return dateTime.DateTime;
}
Function ConvertFromDateTimeOffset(dateTime As DateTimeOffset) As Date
If dateTime.Offset.Equals(TimeSpan.Zero) Then
Return dateTime.UtcDateTime
ElseIf dateTime.Offset.Equals(TimeZoneInfo.Local.GetUtcOffset(dateTime.DateTime))
Return Date.SpecifyKind(dateTime.DateTime, DateTimeKind.Local)
Else
Return dateTime.DateTime
End If
End Function
Az alábbi példa a metódust ConvertFromDateTimeOffset hívja meg annak érdekében, hogy konvertálja azokat az értékeket, amelyek egy UTC-időt, egy helyi időt és az Egyesült Államok központi standard időzónájának idejét ábrázolják.
DateTime timeComponent = new DateTime(2008, 6, 19, 7, 0, 0);
DateTime returnedDate;
// Convert UTC time
DateTimeOffset utcTime = new DateTimeOffset(timeComponent, TimeSpan.Zero);
returnedDate = ConvertFromDateTimeOffset(utcTime);
Console.WriteLine($"{utcTime} converted to {returnedDate} {returnedDate.Kind}");
// Convert local time
DateTimeOffset localTime = new DateTimeOffset(timeComponent,
TimeZoneInfo.Local.GetUtcOffset(timeComponent));
returnedDate = ConvertFromDateTimeOffset(localTime);
Console.WriteLine($"{localTime} converted to {returnedDate} {returnedDate.Kind}");
// Convert Central Standard Time
DateTimeOffset cstTime = new DateTimeOffset(timeComponent,
TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time").GetUtcOffset(timeComponent));
returnedDate = ConvertFromDateTimeOffset(cstTime);
Console.WriteLine($"{cstTime} converted to {returnedDate} {returnedDate.Kind}");
// The example displays the following output to the console:
// 6/19/2008 7:00:00 AM +00:00 converted to 6/19/2008 7:00:00 AM Utc
// 6/19/2008 7:00:00 AM -07:00 converted to 6/19/2008 7:00:00 AM Local
// 6/19/2008 7:00:00 AM -05:00 converted to 6/19/2008 7:00:00 AM Unspecified
Dim timeComponent As Date = #06/19/2008 7:00AM#
Dim returnedDate As Date
' Convert UTC time
Dim utcTime As New DateTimeOffset(timeComponent, TimeSpan.Zero)
returnedDate = ConvertFromDateTimeOffset(utcTime)
Console.WriteLine("{0} converted to {1} {2}", _
utcTime, _
returnedDate, _
returnedDate.Kind.ToString())
' Convert local time
Dim localTime As New DateTimeOffset(timeComponent, _
TimeZoneInfo.Local.GetUtcOffset(timeComponent))
returnedDate = ConvertFromDateTimeOffset(localTime)
Console.WriteLine("{0} converted to {1} {2}", _
localTime, _
returnedDate, _
returnedDate.Kind.ToString())
' Convert Central Standard Time
Dim cstTime As New DateTimeOffset(timeComponent, _
TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time").GetUtcOffset(timeComponent))
returnedDate = ConvertFromDateTimeOffset(cstTime)
Console.WriteLine("{0} converted to {1} {2}", _
cstTime, _
returnedDate, _
returnedDate.Kind.ToString())
' The example displays the following output to the console:
' 6/19/2008 7:00:00 AM +00:00 converted to 6/19/2008 7:00:00 AM Utc
' 6/19/2008 7:00:00 AM -07:00 converted to 6/19/2008 7:00:00 AM Local
' 6/19/2008 7:00:00 AM -05:00 converted to 6/19/2008 7:00:00 AM Unspecified
Megjegyzés
A kód az alkalmazástól és a dátum- és időértékek forrásától függően az alábbi két feltételezést teszi lehetővé, amelyek nem mindig érvényesek:
Feltételezi, hogy egy dátum- és időérték eltolása TimeSpan.Zero a UTC-t jelenti. Valójában az UTC nem egy adott időzónában lévő idő, hanem az az idő, amelyhez viszonyítva a világ időzónáinak időzónái szabványosítva vannak. Az időzónák eltolása Zerois lehet.
Feltételezi, hogy az a dátum és idő, amelynek eltolása megegyezik a helyi időzónáéval, a helyi időzónát jelöli. Mivel a dátum- és időértékek eltérnek az eredeti időzónától, előfordulhat, hogy ez nem így van; a dátum és az idő egy másik, azonos eltolású időzónából származhatott.