Jak zpracovat data a časy, které zahrnují DST

Překlady článku Překlady článku
ID článku: 932955 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Úvod

Vývojáři, kteří zápisu aplikace zpracovat data a časy mohou používat jeden nebo více technologií, které provádějí manipulace datum a čas manipulace. V určitých určité základní operační systém API, modul C runtime (CRT) a Microsoft .NET Framework může převést nebo jinak manipulovat data a časy. Tento článek popisuje některé obecné koncepty, které se účastní zpracování dat a časů. Kromě toho tento článek popisuje vliv změny letní čas (DST) 2007 na určitých produktů a technologií.

Další informace

Čas úložiště a manipulace

Časová razítka jsou hodnoty zadat kombinaci datum a čas. Aplikace musí zpracovat časová razítka obvykle ukládat tyto časová razítka v Universal Coordinated Time (UTC). Výhodou UTC je univerzální UTC. UTC není podléhají zón místní čas nebo DST. UTC je však srozumitelných ani odpovídající většina uživatelů. Ačkoli je ČASOVÝ zřejmé voleb úložiště, není vhodná pro zobrazení. Většina aplikací proto převést místní čas UTC Čas, před zobrazit časové razítko uživateli. Například Průzkumník platí časové pásmo a nastavení DST pro časové razítko UTC před zobrazuje data a časy souborů v adresáři systému souborů Windows NT (NTFS).

Převod z času UTC místní čas si lze představit jako použití dvou posuny. První je posun časové pásmo a druhý je posun DST. Proto místní čas je efektivně čas UTC plus posun časové pásmo plus veškeré použitelné DST posun. Posun časové pásmo je poměrně jasné. Počítač je nakonfigurován pro konkrétní časové pásmo a časové pásmo, že má posun od UTC. Určit, zda posun DST použita je mnohem složitější. Tuto aktivitu závisí na mnoha pravidla jsou složitá a dynamické.

Tyto komplexní pravidla DST jste nedávno změněné s DST 2007. Spuštění v 2007 USA přijala nová data zahájení a nové koncová data pro DST. Navíc je běžné v jiných zemích a vládami pravidelně změnit data zahájení a koncová data pro DST v časových pásmech, které jsou pod jejich ovládací prvek. Následující část popisuje efekty Změna LETNÍHO 2007 na produkty pro vývojáře.

Další informace o DST 2007 naleznete na následujícím webu:
http://support.microsoft.com/gp/cp_dst

Efekty DST 2007 na technologiích pro vývojáře

Windows

Na webu Windows Update a Microsoft Update jsou k dispozici aktualizace, které umožňují Windows změny LETNÍHO 2007 a roky následující správně použít. Po použití těchto aktualizací Windows správně vypočítá aktuální posuny z času UTC místního času počítače průchodu DST. Posuny zahrnout posuny základní API a síťové API související čas.

Další informace naleznete následujícím článku znalostní databáze Microsoft Knowledge Base:
942763Kumulativní aktualizace časových pásem z prosince 2007 pro operační systémy Microsoft Windows (Tento článek může obsahovat odkazy na anglický obsah (dosud nepřeložený).)

C runtime (CRT)

CRT také provádí překlady datum a čas překlady. Proto musí být CRT, také zahrnout nová pravidla DST 2007 aktualizovány. CRT provádí vlastní čas zpracování pouze při nastavit proměnnou prostředí TZ nebo při selhání podkladové volání čas API operačního systému. Aktualizace jsou k dispozici pro CRTs, které jsou součástí jednotlivých verzí Microsoft Visual Studio a také pro CRTs jsou součástí systému Windows. Tyto aktualizace povolit CRT pokračovat správně zpracovat DST převody v USA časových pásmech.

.NET Framework

.NET Framework je založen na podkladové volání operačního systému. Chování .NET Framework tedy odráží stav podkladové operačního systému. Není nutná žádná samostatné aktualizace.

Visual Studio .NET integrované prostředí Development (IDEs)

Visual Studio .NET IDEs zahrnují verze 2002, 2003 a Microsoft Visual C++, Microsoft Visual C# a Microsoft Visual Basic 2005. Tyto produkty jsou ohroženy pouze protože zahrnout CRT. Není nutná žádná aktualizace specifické IDE.

Visual Studio 2005 Team Foundation Server

Visual Studio 2005 Team Foundation Server je založen na podkladové operačního systému pro převody datum a čas. Visual Studio 2005 Team Foundation Server proto projevuje stejné chování jako operační systém. Visual Studio 2005 Team Foundation Server je také závislá na Microsoft SQL Server, SQL Server Reporting Services a službou SharePoint. Počítače by měl být aktualizovány s relevantní aktualizace pro operační systém pro SQL Server a službou SharePoint. Všechny relevantní aktualizace by měly být provedeny ve všech ohrožených počítačích současně. Není nutná žádná zvláštní aktualizace Visual Studio 2005 Team Foundation Server.

Visual Studio 2005 Team System

Visual Studio 2005 Team System je ohrožen prostřednictvím operačního systému, prostřednictvím Visual Studio 2005 Team Foundation Server a prostřednictvím CRT. Není nutná žádná zvláštní aktualizace Visual Studio 2005 Team System.

Visual SourceSafe

Další informace o problémech Visual SourceSafe DST v 2007 klepněte na následující číslo článku databáze Microsoft Knowledge Base:
931804Visual SourceSafe problémy letního času v 2007

Visual Basic 6.0 runtime

Visual Basic 6.0 runtime není ovlivněn.

Visual C++ 6.0

Visual C++ 6.0 již nejsou podporovány.

Další informace naleznete na následujícím webu společnosti Microsoft:
http://support.microsoft.com/lifecycle/

Windows Software Development Kit (SDK) pro systém Windows Vista

Tato obsahuje verzi CRT ovlivněny změny LETNÍHO 2007. Jako část instalace tento SDK můžete nainstalovat v počítačích, které nemají danou verzi CRT nainstalován již Visual Studio 2005 CRT. Pokud již nainstalována novější verze CRT nepřepíše SDK instalaci novější verze. Při odinstalaci SDK nejnovější verzi CRT ponechány v počítači. Nainstalujte aktualizaci Visual Studio 2005 CRT mohou buď před nebo po instalaci SDK.

SDK Windows pro systém Windows Vista také nainstaluje sadu sloučení moduly (.msm soubory) pro Visual Studio 2005 CRT pro redistribuci CRT jako část vlastních aplikací C++. Aplikace, která implementuje redistributable CRT instalační složku aplikace musí nasadit aktualizované CRT z aktualizace Visual Studio 2005 CRT namísto CRT .msm soubory z SDK Windows pro systém Windows Vista. Aplikace, která implementuje redistributable aktualizace Visual Studio 2005 CRT do složky instalace Windows musí redistributable aktualizace Visual Studio 2005 CRT u těchto počítačů.

Platform SDK pro Microsoft Windows Server 2003 R2

Tato obsahuje verzi CRT ovlivněny změny LETNÍHO 2007. Zákazníci musí postupujte poznámky k verzi pro tento SDK a pokud to bude nutné použít aktualizace Visual Studio 2005 CRT.

.NET Framework 2.0 SDK

Tato obsahuje verzi CRT ovlivněny změny LETNÍHO 2007. Jako část instalace tento SDK můžete nainstalovat v počítačích, které nemají danou verzi CRT nainstalován již Visual Studio 2005 CRT. Pokud již nainstalována novější verze CRT nepřepíše SDK instalaci novější verze. Při odinstalaci SDK nejnovější verzi CRT ponechány v počítači. Nainstalujte aktualizaci Visual Studio 2005 CRT mohou buď před nebo po instalaci SDK.

Převod místního času v systému Windows

Aplikace obvykle převést čas UTC místních časech před zobrazit informace o čas a datum informace uživateli. Systém Windows poskytuje několik API aplikacím používat pro manipulaci s časové razítko.
  • Funkce GetSystemTime() a funkce GetSystemTimeAsFileTime() získat aktuální čas UTC ve struktuře SYSTEMTIME nebo struktury FILETIME.
  • Funkce GetLocalTime() získá aktuální místní čas ve struktuře SYSTEMTIME.
  • Funkce GetTimeZoneInformation() získá TIME_ZONE_INFORMATION strukturu, která popisuje aktuální časové pásmo a nastavení DST pro počítač.
  • Funkce SystemTimeToFileTime() a funkce FileTimeToSystemTime() zařazování mezi struktury SYSTEMTIME a struktury FILETIME.
  • Funkce FileTimeToLocalFileTime() a funkce LocalFileTimeToFileTime() převést a struktury FILETIME mezi místním ČASEM a přeložit pomocí aktuální časové pásmo a nastavení DST v počítači.
  • Funkce SystemTimeToTzSpecificLocalTime() a funkce TzSpecificTimeToSystemTime() převést místní strukturu SYSTEMTIME časové razítko UTC ve struktuře SYSTEMTIME. Tyto funkce použít TIME_ZONE_INFORMATION strukturu, které určuje počáteční datum a koncové datum pro DST. Ve výchozím aktuální DST pravidla se používají při poskytované takové struktury.
  • Funkce NetRemoteTOD() získá čas ze vzdáleného serveru pomocí informací na serveru a nastavení.
Poznámka: Funkce FileTimeToLocalFileTime() a funkce LocalFileTimeToFileTime() pomocí pouze aktuální časové pásmo informace a informace DST provést převod mezi čas UTC a místním časem. Tento převod dochází bez ohledu na časové razítko, která je převáděna.

Viz příklad tohoto chování v aplikaci Průzkumník, postupujte takto v počítači, který se nachází v časové pásmo, které používá DST.

Uvědomte si, že tyto kroky vyžadují změnit systémové hodiny. Proto je třeba ukončit všechny aplikace, například kalendář aplikace, které pravděpodobně reagují na tyto změny času před provedením těchto kroků.
  1. Změnit datum počítače DST den. Například nastavte datum 1. července 2006.
  2. V adresáři NTFS ve stejném počítači vytvořte nový textový soubor s názvem Test.txt.
  3. Všimněte si, že časového razítka v souboru způsobem zobrazí v aplikaci Průzkumník:
    7 1/2006 3: 37 pm
  4. Změnit datum počítače bez LETNÍHO den. Například nastavte datum 1. února 2007.
  5. Aktualizovat okno Průzkumníka Windows.
  6. Všimněte si, že časového razítka v souboru způsobem zobrazí v aplikaci Průzkumník:
    7 1/2006 2: 37 pm
V předchozím příkladu UTC časového razítka v souboru nemění. V závislosti na aktuální datum v počítači se však změnit pravidla, která slouží k převodu časového razítka na místní čas. V kroku 3 byla použita posun DST protože červenec 1 spadá do rozsahu DST. V kroku 6 byla použita žádný posun DST, protože únor 1 nespadá DST rozsah. Chování tak, aby časové razítko souboru lze převést deterministically místního času a z místní čas.

Další informace naleznete v tomto blogu:
http://blogs.msdn.com/oldnewthing/archive/2003/10/24/55413.aspx
Metoda SystemTimeToTzSpecificLocalTime() a metodu TzSpecificTimeToSystemTime() převést mezi čas UTC a místním časem pomocí poskytnutého struktury TIME_ZONE_INFORMATION. Je k dispozici žádné informace časové pásmo, tyto funkce použít aktuální časové pásmo pravidla a pravidla DST k určení, zda DST posun musí být použita pro časové razítko. Toto je funkčně ekvivalentní volání metody GetTimeZoneInformation() získat TIME_ZONE_INFORMATION struktura, která je aktuálně platný.

Struktura TIME_ZONE_INFORMATION obsahuje datum zahájení a datum zastavení DST. Proto struktura TIME_ZONE_INFORMATION používá aktuální časové pásmo informace, může struktury TIME_ZONE_INFORMATION zavádět historických nepřesnost. Toto chování může dojít, pokud aktuální časové pásmo informace a informace DST není odrážet časového razítka, která je převáděna. Toto chování je ovlivněno DST 2007 pouze protože změnit pravidla, která řídí data spustí DST a zastaví.

Získání systém přesné převody z těchto funkcí, musí aplikace poskytnout systém přesné struktury TIME_ZONE_INFORMATION při aplikace zavolá těchto funkcí.

Dynamické časová pásma v systému Windows

Windows Vista zavádí dynamické zón LETNÍHO času. Dynamické DST poskytuje podporu pro časová pásma, jehož hranice DST změnit rok rok. Tato pravidla jsou uloženy v registru. Pravidla lze pomocí funkce GetDynamicTimeZoneInformation() dotazy aplikací.

Povolit dynamických časových pásmech snadnější aktualizace počítačů zejména pro národní prostředí, kde jsou hranice roční DST známé předem. Další informace o struktuře DYNAMIC_TIME_ZONE_INFORMATION v Windows SDK Vista naleznete na webu Microsoft Developer Network (MSDN):
http://msdn2.microsoft.com/en-us/library/ms724253.aspx

Převod místního času v modul C runtime (CRT)

CRT podstatě má tři režimy, ve kterém ji lze přeložit časová razítka:
  • Pokud není nastavena proměnná prostředí TZ, CRT volání API Windows a Windows chování projevuje popsaným v tomto článku.
  • Pokud je nastavena proměnná prostředí TZ CRT provádí vlastní převody, které jsou založeny na nastavení. CRT je aktualizován tak, aby respektuje nová pravidla DST 2007, když provádí převody v tomto scénáři.
  • Pokud není nastavena proměnná prostředí TZ, ale podkladové API Windows nezdaří, CRT spadá zpět k vlastním převody pomocí hodnotu PST8PDT pro proměnnou prostředí TZ.
CRT obsahuje vlastní logiku pro převod na místní čas UTC. Aplikace lze získat z funkce například funkci time() časová razítka UTC. Tyto UTC časová razítka jsou uloženy v time_t hodnoty. Převod na místní čas lze provést pomocí funkce jako například funkce localtime_s(). Funkce localtime_s() naplní tm struktura, která je definována v záhlaví souboru Time.h. Struktura tm je založen na časové pásmo definovanou v proměnné prostředí TZ a DST pravidla, která jsou platné v okamžiku časového razítka.

Poznámka: Tento převod postupuje konkrétní do USA.

Před instalací aktualizace 2007 LETNÍHO CRT správně zpracovává aktuální časová razítka v USA časových pásmech. Po instalaci aktualizace 2007 LETNÍHO CRT také zpracovává minulé a budoucí data USA. Aktualizace CRT jsou uvedeny v části text odkazy ”.

Převod místního času v .NET Framework

.NET Framework obsahuje třídy ukládat a převést časová razítka. Tyto třídy zahrnují třídu DateTime, TimeZone třídy, třídy TimeSpan a třídy DateTimeKind. Jako dříve uvedena tyto třídy závisí především na podkladové implementace platformu. Tyto třídy vykazují stejné chování jako podkladové API operačního systému.

Jeden zajímavé chování exhibited podle třídy .NET Framework datum a čas třídy spojuje funkce Posun časového razítka podle požadované částky. Zvažte například AddHours() funkce, funkce AddMinutes() a funkce AddSeconds() ve třídě DateTime. Těchto funkcí a podobně pojmenovanými funkcí zvýšit pouze o požadované množství bez ohledu na nastavení DST časové razítko. Toto chování může být považována za jednoduché aritmetické na podkladové časové razítko UTC. Toto chování by však při přidávání způsobí časové razítko předat do nebo z LETNÍHO vést k neočekávaným výsledkům. Toto chování nesouvisejících změny LETNÍHO 2007.

Doporučení

Následující doporučení mohou pomoci vývojáři minimalizovat vliv DST 2007 a zlepšení Obecné datum a čas zpracování.
  • Měli byste naplánovat pro poblíž atomické instalace aktualizací LETNÍHO 2007. Všechny plánované aktualizace DST 2007 použít jako Zavřít v čase do jedné jiného co nejvíce. Počítač byl aktualizován se pokusí použít metody, například dotazy SQL nebo webových služeb komunikovat s počítači, který nebyl aktualizován, může dojít k chybám převodu. Podobně jediného počítače vyžaduje dvě nebo více aktualizací, například CRT aktualizace a aktualizace systému Windows by měl být aktualizace použita současně.
  • Časová razítka UTC jsou systém přesné. Je obvykle převod na místní čas týká většiny aplikací. Aplikace by měl vždy ukládají časová razítka UTC. Převody místní čas pro účely zobrazení vyžadují informace o časových pásem a LETNÍHO informace. Tyto informace mohou pocházet z několika zdrojů:
    • Aplikace může používat aktuální časové pásmo a nastavení DST pro převod. Pokud aktuální časové pásmo a nastavení DST nebyly platné v okamžiku časového razítka to může zavádět nepřesnost v převodu.
    • Aplikace mohou ukládat informace o dříve přesné časové pásmo a DST informace k časové razítko UTC.
    • Při dynamických časových pásem jsou k dispozici, může aplikace používat dynamické časové zóny k určení, které časové pásmo informace by měla být použita na určité časové razítko UTC. Tato možnost je k dispozici, pouze pokud je k dispozici pro konkrétní časové razítko a pro specifické časové pásmo informace dynamické časové pásmo.
    • Aplikace mohou ukládat místní časové razítko a časové razítko UTC. Tato metoda zabraňuje nutné pro budoucí převod.
  • Jakákoli komunikace mezi počítači zacházet s časová razítka měli použít časová razítka UTC. To implicitně poskytuje oba počítače stejné informace kontextu UTC.
  • Pokud aplikace zpracovává kalendářní data, měli byste být opatrní s způsobem, že jsou data zpracována v testování. Data jsou zobrazeny bez informací o času jsou obvykle uloženy jako časové razítko na příslušné datum 12: 00 dop. Proto chybu vypnout podle jedna hodina část časové razítko může vést vypnutí podle jeden výsledek v efektivní datum Pokud čas posunuty do 11: 00 HODIN předchozí den.

Odkazy

Další informace o portálu DST 2007 Microsoft naleznete na následujícím webu: http://support.microsoft.com/gp/cp_dstDalší informace naleznete v následujících článcích znalostní báze Microsoft Knowledge Base:
942763Kumulativní aktualizace časových pásem z prosince 2007 pro operační systémy Microsoft Windows (Tento článek může obsahovat odkazy na anglický obsah (dosud nepřeložený).)
931975Jak připravit SQL Server 2005 a SQL Server 2000 pro změny letního času v 2007
931804Visual SourceSafe problémy letního času v 2007
Další informace naleznete na následujících webech Microsoft Developer Network (MSDN):
http://msdn2.microsoft.com/en-us/library/ms724277.aspx

http://msdn2.microsoft.com/en-us/library/ms724490.aspx

http://msdn2.microsoft.com/en-us/library/ms725473.aspx
Chcete-li získat aktualizace DST 2007 modul C runtime (CRT), klepněte na následující čísla následujících článcích databáze Microsoft Knowledge Base:
932305Oprava: Visual C++ .NET 2002 C runtime 2007 letní čas aktualizace TZ problému proměnné prostředí
932304Oprava: Visual C++ .NET 2002 Service Pack 1 C runtime 2007 letní čas aktualizace TZ problému proměnné prostředí
932299Oprava: Visual C++ .NET 2003 C runtime 2007 letní čas aktualizace TZ problému proměnné prostředí
932298Oprava: Visual C++ .NET 2003 Service Pack 1 C runtime 2007 letní čas aktualizace TZ problému proměnné prostředí
932392Oprava: Visual C++ .NET 2005 C runtime 2007 letní čas aktualizace pro proměnnou prostředí TZ
932391Oprava: Visual C++ .NET 2005 Service Pack 1 C runtime 2007 letní čas aktualizace pro proměnnou prostředí TZ
932590Oprava: Aplikace založené na systému Windows proměnnou prostředí TZ nemusí fungovat podle očekávání z důvodu změny LETNÍHO

Vlastnosti

ID článku: 932955 - Poslední aktualizace: 15. ledna 2008 - Revize: 5.2
Informace v tomto článku jsou určeny pro produkt:
  • The C Run-Time (CRT)
  • Microsoft Visual Studio 2005 Service Pack 1
  • Microsoft Visual Studio 2005 Team Foundation Server
  • Microsoft Visual Studio 2005 Team System Team Foundation:
  • Microsoft Visual Studio 2005 Standard Edition
  • Microsoft Visual Studio 2005 Professional Edition
  • Microsoft Visual Studio 2005 Express Edition
  • Microsoft Visual Studio .NET 2003 Service Pack 1
  • Microsoft Visual Studio .NET 2003 Professional Edition
  • Microsoft Visual Studio .NET 2003 Enterprise Architect
  • Microsoft Visual Studio .NET 2003 Enterprise Developer
  • Microsoft Visual Studio .NET 2003 Academic Edition
  • Microsoft Visual Studio .NET 2002 Professional Edition
  • Microsoft Visual Studio .NET (2002), Enterprise Architect Edition SP1
  • Microsoft Visual Studio .NET 2002 Enterprise Developer
  • Microsoft Visual Studio .NET 2002 Enterprise Architect
  • Microsoft Visual Studio .NET 2002 Academic Edition
Klíčová slova: 
kbmt kbinfo kbhowto KB932955 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:932955

Dejte nám zpětnou vazbu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com