Dátumok, időpontok és időzónák
A .NET dátumokat, időpontokat és időzónákat ábrázoló típusokat biztosít. Ez a cikk ezeket a típusokat ismerteti.
Az alapszintű DateTime struktúrán kívül a .NET a következő osztályokat is biztosítja, amelyek támogatják az időzónák használatát:
-
Ezzel az osztálysal bármilyen, a rendszeren előre definiált időzónával dolgozhat, új időzónákat hozhat létre, és egyszerűen konvertálhat dátumokat és időpontokat az egyik időzónából a másikba. Új fejlesztéshez használja a TimeZoneInfo osztályt a TimeZone osztály helyett.
-
Ezzel a struktúrával olyan dátumokkal és időpontokkal dolgozhat, amelyek eltolása (vagy eltérése) ismert az UTC-től. A DateTimeOffset struktúra egyesíti a dátum- és időértéket az idő UTC-től való eltolódásával. Az UTC-hez való viszonya miatt egy egyedi dátum- és időérték egyértelműen azonosít egy időpontot. Így egy DateTimeOffset érték hordozhatóbbá válik az egyik számítógépről a másikra, mint egy DateTime érték.
A következő osztályok támogatást nyújtanak az idővel való munkához:
-
Ez a struktúra egy időintervallumot jelöl, például az eltelt időt vagy a két dátum közötti különbséget.
-
Ezzel a struktúrával dátum nélküli időt jelölhet. Az idő egy nem meghatározott nap óráinak, perceinek és másodperceinek felel meg.
TimeOnly
tartománya00:00:00.0000000
és23:59:59.9999999
között van. Ezzel a típussal helyettesíthetiDateTime
ésTimeSpan
típusokat a kódban, amikor ezeket a típusokat használta egy idő megjelenítéséhez. További információ: DateOnly és TimeOnly struktúrák használata.Fontos
TimeOnly nem érhető el a .NET-keretrendszerhez.
-
Ez egy alaposztály, amely az idő absztrakcióját biztosítja. Az aktuális idő ellenőrzésének gyakori módja a
DateTime.UtcNow
vagyDateTimeOffset.UtcNow
használata. Ezek a típusok azonban nem biztosítanak semmilyen vezérlést a "most" nevűnek ítélt érték felett. Miért akarod ezt szabályozni? Tesztelhetőség. Tegyük fel például, hogy egy eseménykövető alkalmazást ír, amely 1 nappal az esemény előtt emlékeztetőket biztosít. Az alkalmazás logikája az, hogy óránként ellenőrizze az esemény időpontját, és riasztást küld a felhasználónak, ha az 24 órával az esemény előtt van. Az alkalmazás tesztjeinek megírása során saját típust kell megadnia, amelyDateTimeOffset.UtcNow
-t burkol a logika teszteléséhez, de a .NET most már biztosítja Önnek ezt az absztrakt osztályt.További információért lásd: Mi az a TimeProvider.
A
TimeProvider
típus szerepel a .NET-ben.A .NET-keretrendszer és a .NET Standard esetében a
TimeProvider
a Microsoft.Bcl.TimeProvider NuGet-csomagbiztosítja.
A következő osztályok támogatják a dátumokkal való munkát:
-
Ezt a struktúrát akkor használja, ha olyan értékkel dolgozik, amely csak egy dátumot jelöl. A dátum az egész napot jelöli a nap elejétől a végéig.
DateOnly
tartománya0001-01-01
és9999-12-31
között van. Ez a típus pedig a hónap, a nap és az év kombinációt jelöli meghatározott idő nélkül. Ha korábban egyDateTime
típust használt a kódban egy olyan dátum megjelenítéséhez, amely figyelmen kívül hagyta az időt, használja ezt a típust a helyén. További információ: DateOnly és TimeOnly struktúrák használata.Fontos
DateOnly nem érhető el a .NET-keretrendszerhez.
A következő szakasz azokat az információkat ismerteti, amelyek az időzónákkal való munkához, valamint az időzóna-ismeretű alkalmazások létrehozásához szükségesek, amelyek dátumokat és időpontokat alakíthatnak át az időzónákból a másikba.
Ebben a szakaszban
időzóna áttekintése
Ismerteti az időzóna-alapú alkalmazások létrehozásához kapcsolódó terminológiát, fogalmakat és problémákat.
Választás a DateTime, a DateTimeOffset, a TimeSpan és a TimeZoneInfo között
A DateTime, a DateTimeOffsetés a TimeZoneInfo típus használatát ismerteti a dátum- és időadatok használatakor.
Helyi rendszeren definiált időzónák megkeresése
A helyi rendszeren található időzónák számbavételét ismerteti.
Útmutató: A számítógépen található időzónák számbavétele
Példákat tartalmaz a számítógép beállításjegyzékében meghatározott időzónák számbavételére, és lehetővé teszi, hogy a felhasználók egy előre meghatározott időzónát válasszanak ki egy listából.
Útmutató: Az előre definiált UTC- és helyi időzóna-objektumok elérése
A koordinált egyetemes idő és a helyi időzóna elérését ismerteti.
Útmutató: TimeZoneInfo objektum példányosítása
Azt ismerteti, hogyan lehet példányosítani egy TimeZoneInfo objektumot a helyi rendszerregisztrációs adatbázisból.
DateTimeOffset objektum példányosítása
A DateTimeOffset objektumok példányosításának módjait, valamint a DateTime értékek DateTimeOffset értékké alakításának módjait ismerteti.
Útmutató: Időzónák létrehozása beállítási szabályok nélkül
Ismerteti, hogyan hozhat létre olyan egyéni időzónát, amely nem támogatja a nyári időszámításra és a nyári időszámításra való áttérést.
Útmutató: Időzónák létrehozása beállítási szabályokkal
Bemutatja, hogyan hozhat létre olyan egyéni időzónát, amely támogatja az áttéréseket a nyári időszámítás kezdetére és végére.
Időzónák mentése és visszaállítása
Ismerteti TimeZoneInfo időzóna-adatok szerializálásának és deszerializálásának támogatását, és bemutatja azokat a forgatókönyveket, amelyekben ezek a funkciók használhatók.
Hogyan kell: időzónákat menteni egy beágyazott erőforrásba
Ismerteti, hogyan hozhat létre egyéni időzónát, és hogyan mentheti az adatait egy erőforrásfájlba.
Útmutató: Időzónák visszaállítása beágyazott erőforrásból
A beágyazott erőforrásfájlba mentett egyéni időzónák példányosítását ismerteti.
Aritmetikai műveletek végrehajtása dátumokkal és időpontokkal
Ismerteti a DateTime és DateTimeOffset értékek hozzáadásával, kivonásával és összehasonlításával kapcsolatos problémákat.
Útmutató: Időzónák használata dátum- és időritmetikai
Az időzóna beállítási szabályait tükröző dátum- és időritmetika elvégzésének módját ismerteti.
Átalakítás a "DateTime" és a "DateTimeOffset" között
A DateTime és DateTimeOffset értékek közötti konvertálást ismerteti.
Időzónák közötti időszámítás
Leírja, hogyan lehet átváltani az időpontokat egyik időzónáról a másikra.
Útmutató: Kétértelmű időpontok feloldása
Azt ismerteti, hogyan oldhat fel kétértelmű időt úgy, hogy megfelelteti az időzóna alapidejének.
Útmutató: A felhasználók megoldhatják a kétértelmű időket
Azt ismerteti, hogyan határozhatja meg a felhasználó a nem egyértelmű helyi idő és az összehangolt egyetemes idő közötti leképezést.