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úra mellett a .NET a következő osztályokat is biztosítja, amelyek támogatják az időzónák használatát:

  • TimeZoneInfo

    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 az TimeZoneInfo osztályt az TimeZone osztály helyett.

  • DateTimeOffset

    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:

  • TimeSpan

    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.

  • TimeOnly

    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ánya 00:00:00.0000000 és 23:59:59.9999999között van. Ez a típus a DateTime és TimeSpan típusok helyett használható a kódban, amikor ezeket a típusokat idő ábrázolására használta. További információért tekintse meg a „A DateOnly és a TimeOnly struktúrák használata” című részt.

    Fontos

    TimeOnly nem érhető el a .NET-keretrendszerhez.

  • TimeProvider

    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 vagy a DateTimeOffset.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, amely DateTimeOffset.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 TimeProvider esetében a Microsoft.Bcl.TimeProvider NuGet csomag biztosítja.

A következő osztályok támogatják a dátumokkal való munkát:

  • DateOnly

    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ánya 0001-01-01 és 9999-12-31kö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 a kódban egy olyan típust DateTime használt, amely az időt figyelmen kívül hagyó dátumot jelöl, használja ezt a típust a helyén. További információért tekintse meg a „A DateOnly és a TimeOnly struktúrák használata” című részt.

    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
Azt tárgyalja, mikor használjuk a DateTime, DateTimeOffset és TimeZoneInfo típusokat a dátum- és időadatok kezelésénél.

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
Ismerteti, hogyan lehet példányosítani egy objektumot TimeZoneInfo a helyi rendszerregisztrációs adatbázisból.

DateTimeOffset objektum példányosítása
Az DateTimeOffset objektum példányosításának módjait, valamint az DateTime érték 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 az 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őritkításban
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őátalakí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.

Utalás

System.TimeZoneInfo