Jak připravit Applications jazyka pro rok 2000

Překlady článku Překlady článku
ID článku: 162718 - Produkty, které se vztahují k tomuto článku.
Tento článek byl archivován. Je nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

Jako vývojář může být obáváte jak vaše aplikace bude zpracovávat data mimo 12, 31/1999. V lednu prvního roku 2000 budou programy myslíte je rok 2000, 1900 nebo dokonce 1980? Cílem tohoto článku je zajistit, aby jazyka aplikací bude chovat správně s daty za 12, 31/1999.

Další informace

Zatímco roky větší než 1999 (ve formátu čtyř číslic) bude zpracovávat všechny verze jazyka, vynutí předávání dvě číslice roku v datu (například 7/3/45) jazyka předpokládat století, jaké datum odpovídá. Nejlepší způsob vysvětlují toto chování by případně přidělit rychlé lekci historie jazyka.

Historie lekci jazyka

Pro všechny verze jazyka pro Windows (včetně jeho předchůdci například jazyka pro DOS a QuickBasic) před a včetně 3.0 dvoumístný formát roku byly vždy předpokládá být 1900s. Kód implementovat toto výchozí nastavení byla integrována do každé verze knihovna run-time a nezávisí na verzi operačního systému nebo století aktuální systémové datum.

Mezi cykly vývoj jazyka 3.0 a 4.0 dvě nové entity emerged: jazyka pro aplikace a automatizace OLE. Knihovny runtime Visual Basic k před zavedením těchto technologií obsahoval kód zodpovědný za převod rok dvěma číslicemi čtyřmístný rok. Automatizace OLE vystavena značnou funkce by přístup jiných aplikací. Visual Basic for Applications není třeba implementovat tento kód; jej mohl volání knihoven automatizace OLE místo.

Visual Basic 4.0 byl vyvinut s Tato spolupráce v úvahu a začátku spoléhají na automatizaci OLE knihoven převést dvouciferným letopočtem čtyřciferně ve většině případů. Výjimkou pravidlo je funkce DateSerial, která byla implementována v knihovně runtime jazyka, protože jazyka vyžadováno více funkcí než knihovny automatizaci OLE by poskytují dané době.

Během cyklu vývoje 4.0 jazyka Microsoft rozhodli, že výchozí hodnoty používané v předchozích verzích jazyka byly spolehlivé ale nutně praktické. Nové pravidlo tedy emerged. Rok dvěma číslicemi by převedeny na aktuální století systémové datum. Tedy, Year(Date("1/1/00")) by vyhodnotit na aktuální století. Nové pravidlo byla implementována v knihovnách automatizace OLE používaný pro aplikace Visual Basic 4.0 a jazyka. Knihovny runtime jazyka 4.0 také implementuje pravidlo Funkce DateSerial.

Microsoft později reconsidered a změněn výchozí v automatizaci OLE (nyní jednoduše automatizace) knihovny verze 2.20.4049 OleAut32.dll. Tato změna neovlivní 16bitové aplikace spoléhají na knihoven automatizace pouze 32bitové aplikace. Rok dvěma číslicemi mezi 00 a 29 (například 17) je nyní, zatímco rok dvěma číslicemi mezi 30 a 99 (například 72) interpretovány jako 1972 interpretován jako 2017. Nové knihovny automatizace poskytují funkce jazyka vyžaduje pro funkce DateSerial. Tedy Visual Basic 5.0 a následné vydání již implementovat pravidla pro tuto funkci v jejich knihovnách modulu runtime.

Aktualizované knihovny automatizace dodávána s Internet Explorer verze 3.0 a vyšší, Windows NT 3.51 Service Pack 5, Windows NT 4.0, Windows 95 OSR 2, Office 97, Visual Basic 5.0 a další produkty.

Co znamená všechna tato Mean k vývojáře kdo použití jazyka?

Předchozí verze 3.0 jazyka a převést všechny roky, dvoumístný 1900s.

4.0 Jazyka (16 bitů) převádí všechny roky, dvoumístný století aktuální systémové datum. V závislosti na funkci používá převede datum založené na výchozí hodnoty v 16bitových knihoven automatizace nebo knihovny runtime jazyka. Od jazyka 4.0 vydána tak chování je konzistentní bez ohledu na to, je použita funkce datum, které změněny není výchozí hodnoty v knihovnách 16bitové automatizace.

4.0 Jazyka formátu dvoumístného (32bitové) převede na čtyři číslice roky na základě výchozí v knihovnách automatizace kromě při použití funkce DateSerial, převede všechny roky, dvoumístný století aktuální systémové datum. 32Bitové knihovny automatizace (OleAut32.dll verze 2.10), které dodáno při vydání jazyka 4.0 převedeny všechny roky, dvoumístný století aktuální systémové datum. Automatizace 32bitové novější knihovny (verze OleAut32.dll 2.20 a vyšší) převést dvoumístný formát roku 1900s Pokud je rok dvěma číslicemi mezi 30 a 99. Pokud je mezi 00 a 29 rok dvěma číslicemi, datum převedena 2000s.

Verze jazyka k subsequent 4.0, převést dvoumístný formát roku na základě výchozí v knihovnách automatizace všechny funkce datum roky čtyři číslice. Visual Basic 5.0 dodávána se verze 2.20.4054 převede dvoumístný formát roku 1900s, pokud je rok dvěma číslicemi mezi 30 a 99. Pokud je mezi 00 a 29 rok dvěma číslicemi, datum převedena 2000s.

Pokud co I příště Like tyto výchozí?

Chcete použijte vlastní sadu pravidel místo použití na nativní jazyka výchozí hodnoty. Můžete například zadat pouze dvě číslice roku a mít 00 k 49 odpovídají roky 2000: 2049 a mít 50 do 99 odpovídají roky 1950: 1999.

Při přijetí řetězec data od uživatele test formát řetězce určit počet číslic zadali pro rok. Podle pravidel pro vzorové aplikace je 1, 11/45 rok 2045 a není v roce 1945. V rámci kódu pro aplikaci změnit řetězec použijte příslušné čtyřmístný rok pak, že datum řetězec s čtyřmístný rok převést datum proměnné.

Ukázkový kód

Následující kód vyhodnotí data zadaná do textového pole s názvem txtDate klepnutí cmdConvertDate. Pokud datum obsahuje dvě číslice roku, datum převeden na datum čtyřmístný rok podle vzorové pravidlo. Kód potom zobrazí počáteční datum zadané jako převedené podle kód podle vzorové pravidlo úplný rok a úplný rok převést pomocí nativního jazyka výchozí hodnoty. Nakonec datum zobrazené v txtDate převedeny na non dvojznačný datum s příslušnou čtyřmístný rok.

Jakmile jste vytvořili kód pro zpracování pravidla pro interpretaci roků dvěma číslicemi, můžete vytvořit kód do 32bitové vlastní ovládací prvek s řízení vytváření Edition z jazyka. Další informace o produktu a o vytváření vlastní vlastní ovládací prvky naleznete na webu Microsoft jazyka na:

http://www.microsoft.com/vbasic

Tento kód vyžaduje kalendářní data být zadána ve formátu mm/dd/rr, ale mohl zpracovávat jiné datum formátu snadno změnit:

   Private Sub cmdConvertDate_Click()
       Dim strYear As String
       Dim intSlash As Integer
       If IsDate(txtDate) or txtDate = "2/29/00" Then
           'Find first date separator.
           intSlash = InStr(txtDate, "/")
           If intSlash > 0 Then
               'Find second date separator.
               intSlash = InStr(intSlash + 1, txtDate, "/")
               If intSlash > 0 Then
                   'Extract the year from the date.
                   strYear = Mid(txtDate, intSlash + 1)
                   If Len(strYear) = 2 Then
                       If CInt(strYear) < 50 Then
                       ' Less than 50: year = 20XX.
                           strYear = "20" & strYear
                       Else
                       ' Greater than 50: year = 19XX.
                           strYear = "19" & strYear
                       End If
                   End If
                   MsgBox "Date Entered: " & txtDate
                   MsgBox "Year (Our Rule): " & strYear
                   MsgBox "Year (VB Default): " & Year(txtDate)
               Else
                   MsgBox "Date not in expected format!"
               End If
           Else
               MsgBox "Date not in expected format!"
           End If
       Else
           MsgBox "Not a valid date!"
       End If
       '  Clarify date in txtDate.
       txtDate.Text = Left(txtDate.Text, intSlash) & strYear
   End Sub
				

Odkazy

Nápovědě jazyka souboru; hledání na: variant typy dat; Datum a IsDate funkce; funkce CDate a CVDate;

(c) 1997 Microsoft Corporation, všechny rezervované práv. Příspěvky společností David Sceppa, Microsoft

Vlastnosti

ID článku: 162718 - Poslední aktualizace: 28. února 2014 - Revize: 3.3
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Visual Basic 6.0 Learning Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft Visual Basic Control Creation Edition
  • Microsoft Visual Basic 5.0 Learning Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic 4.0 Standard Edition
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 4.0 16-bit Enterprise Edition
  • Microsoft Visual Basic 4.0 32-Bit Enterprise Edition
  • Microsoft Visual Basic 2.0 Standard Edition
  • Microsoft Visual Basic 3.0 Professional Edition
  • Microsoft Visual Basic 1.0 Standard Edition
Klíčová slova: 
kbnosurvey kbarchive kbmt kbhowto KB162718 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:162718

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