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.
Megjegyzés:
Ez a cikk kiegészítő megjegyzéseket tartalmaz az API referenciadokumentációjához.
A metódussal ToBinary az aktuális DateTime objektum értékét bináris értékké alakíthatja. Ezt követően használja a bináris értéket és a FromBinary metódust az eredeti DateTime objektum újbóli létrehozásához.
Fontos
Bizonyos esetekben a DateTime metódus által FromBinary visszaadott érték nem azonos a metódushoz DateTime megadott eredeti ToBinary értékkel. További információkért lásd a következő, "Helyi időbeállítás" című szakaszt.
A DateTime struktúra egy privát Kind mezőből áll, amely azt jelzi, hogy a megadott időérték helyi időn, koordinált világidőn (UTC), vagy egyik sem alapján van-e, kapcsolva egy privát mezőhöz Ticks, amely a dátumot és időt meghatározó 100 nanoszekundumos számlálók számát tartalmazza.
Helyi idő beállítása
A helyi idő, amely a helyi időzónához igazított koordinált univerzális idő, egy DateTime olyan struktúra képviseli, amelynek Kind tulajdonsága az érték Local. A metódus által DateTime előállított bináris ábrázolásból származó helyi ToBinary érték visszaállításakor a FromBinary metódus módosíthatja az újra létrehozott értéket, hogy az ne legyen egyenlő az eredeti értékkel. Ez a következő feltételek mellett fordulhat elő:
Ha a metódus egy helyi DateTime objektumot szerializál egy időzónában ToBinary , majd a metódus egy FromBinary másik időzónában deszerializálja, az eredményként DateTime kapott objektum által képviselt helyi idő automatikusan a második időzónához lesz igazítva.
Vegyük például egy DateTime objektumot, amely helyi idő szerint 15:00 órát mutat. Az alkalmazás, amely az Egyesült Államok csendes-óceáni időzónája szerint fut, a ToBinary metódussal bináris értékké alakítja az DateTime objektumot. Egy másik alkalmazás, amely az Usa keleti időzónájában fut, majd a FromBinary metódussal konvertálja a bináris értéket egy új DateTime objektummá. Az új DateTime objektum értéke 18 óra, amely az eredeti 3 P.M. értékkel megegyező időpontot jelöli, de a keleti időzónában a helyi időhöz van igazítva.
Ha egy helyi DateTime érték bináris ábrázolása érvénytelen időt jelöl annak a rendszernek a helyi időzónájában, amelyre FromBinary meghívják, az idő úgy lesz módosítva, hogy érvényes legyen.
A téli időről a nyári időszámításra való áttérés például az Egyesült Államok csendes-óceáni időzónájában történik 2010. március 14-én, hajnali 2:00-kor, amikor az idő egy órával, hajnali 3:00-ra halad előre. Ez az óraintervallum érvénytelen idő, vagyis olyan időintervallum, amely ebben az időzónában nem létezik. Az alábbi példa azt mutatja be, hogy amikor a metódus bináris értékké konvertálja a ToBinary tartományba eső időt, majd a FromBinary metódus visszaállítja, az eredeti érték érvényes időként lesz módosítva. A példában látható módon meghatározhatja, hogy egy adott dátum- és időérték módosítható-e azáltal, hogy átadja azt a TimeZoneInfo.IsInvalidTime metódusnak.
using System; public class Example { public static void Main() { DateTime localDate = new DateTime(2010, 3, 14, 2, 30, 0, DateTimeKind.Local); long binLocal = localDate.ToBinary(); if (TimeZoneInfo.Local.IsInvalidTime(localDate)) Console.WriteLine($"{localDate} is an invalid time in the {TimeZoneInfo.Local.StandardName} zone."); DateTime localDate2 = DateTime.FromBinary(binLocal); Console.WriteLine($"{localDate} = {localDate2}: {localDate.Equals(localDate2)}"); } } // The example displays the following output: // 3/14/2010 2:30:00 AM is an invalid time in the Pacific Standard Time zone. // 3/14/2010 2:30:00 AM = 3/14/2010 3:30:00 AM: Falseopen System let localDate = DateTime(2010, 3, 14, 2, 30, 0, DateTimeKind.Local) let binLocal = localDate.ToBinary() if TimeZoneInfo.Local.IsInvalidTime localDate then printfn $"{localDate} is an invalid time in the {TimeZoneInfo.Local.StandardName} zone." let localDate2 = DateTime.FromBinary binLocal printfn $"{localDate} = {localDate2}: {localDate.Equals localDate2}" // The example displays the following output: // 3/14/2010 2:30:00 AM is an invalid time in the Pacific Standard Time zone. // 3/14/2010 2:30:00 AM = 3/14/2010 3:30:00 AM: FalseModule Example Public Sub Main() Dim localDate As Date = DateTime.SpecifyKind(#03/14/2010 2:30AM#, DateTimeKind.Local) Dim binLocal As Long = localDate.ToBinary() If TimeZoneInfo.Local.IsInvalidTime(localDate) Then Console.WriteLine("{0} is an invalid time in the {1} zone.", _ localDate, _ TimeZoneInfo.Local.StandardName) End If Dim localDate2 As Date = DateTime.FromBinary(binLocal) Console.WriteLine("{0} = {1}: {2}", _ localDate, localDate2, localDate.Equals(localDate2)) End Sub End Module ' The example displays the following output: ' 3/14/2010 2:30:00 AM is an invalid time in the Pacific Standard Time zone. ' 3/14/2010 2:30:00 AM = 3/14/2010 3:30:00 AM: False