Como preparar aplicativos Visual Basic para o ano 2000

Traduções deste artigo Traduções deste artigo
ID do artigo: 162718 - Exibir os produtos aos quais esse artigo se aplica.
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

Como desenvolvedor, você pode se preocupar com como seus aplicativos irão lidar com datas além 31/12/1999. Em 1 de janeiro do ano 2000, os programas pensará é o ano 2000, 1900 ou até mesmo 1980? O objetivo deste artigo é garantir que o Visual Basic aplicativos irão se comportar adequadamente com datas além 31/12/1999.

Mais Informações

Enquanto todas as versões do Visual Basic irão lidar com anos maiores 1999 (em um formato de quatro dígitos), passar um ano de dois dígitos em uma data (como 7/3/45) força Visual Basic para assumir que a data corresponde do século. Talvez a melhor maneira para explicar esse comportamento seria fornecer uma rápida lição de histórico do Visual Basic.

Lição de histórico do Visual Basic

Para todas as versões do Visual Basic para Windows (incluindo suas predecessoras, como Visual Basic para DOS e QuickBasic) antes de e incluindo 3.0, anos de dois dígitos foram sempre considerados no 1900s. O código para implementar esse padrão foi criado em tempo de execução biblioteca do cada versão e não depende a versão do sistema operacional ou o século da data atual do sistema.

Entre os ciclos de desenvolvimento para o Visual Basic 3.0 e 4.0, surgiram duas novas entidades: Visual Basic for Applications e automação OLE. Antes para o advento dessas tecnologias, biblioteca de tempo de execução do Visual Basic contém o código responsável por converter um ano de dois dígitos para um ano de quatro dígitos. Automação OLE expostos muita funcionalidade que podem acessar outros aplicativos. Visual Basic for Applications não necessário implementar esse código; ele pode fazer chamadas para as bibliotecas de automação OLE em vez disso.

Visual Basic 4.0 foi desenvolvido com essa interoperabilidade em mente e começou a contam com as bibliotecas de automação OLE para converter anos de dois dígitos para anos de quatro dígitos na maioria dos casos. A exceção à regra é a função DateSerial que foi implementada na biblioteca de tempo de execução do Visual Basic porque Visual Basic necessário mais funcionalidade que a biblioteca de automação OLE poderia fornecer nesse momento.

Durante o ciclo de desenvolvimento do Visual Basic 4.0, a Microsoft decidiu que os padrões usados nas versões anteriores do Visual Basic eram confiável mas não necessariamente prático. Portanto, uma nova regra surgiram. Um ano de dois dígitos seria convertido para o século atual da data do sistema. Portanto, Year(Date("1/1/00")) seria avaliada como o século atual. A nova regra foi implementada nas bibliotecas de automação OLE usadas pelo Visual Basic 4.0 e o Visual Basic for Applications. A biblioteca de tempo de execução do Visual Basic 4.0 também implementa a regra para a função DateSerial.

Microsoft posteriormente reconsidered e alterado o padrão na automação OLE (agora simplesmente automação) bibliotecas de versão 2.20.4049 OleAut32.dll. Essa alteração não afeta aplicativos de 16 bits que dependem das bibliotecas de automação, aplicativos de 32 bits somente. Agora, um ano de dois dígitos entre 00 e 29 (como 17) é interpretado como 2017 enquanto um ano de dois dígitos entre 30 e 99 (como 72) é interpretado como 1972. Novas bibliotecas de automação fornecem a funcionalidade que requer o Visual Basic para a função DateSerial. Assim, Visual Basic 5.0 e versões subseqüentes não implementam regras para essa função em suas bibliotecas de tempo de execução.

A biblioteca de automação atualizada é fornecido com Internet Explorer versão 3.0 e posterior, Windows NT 3.51 Service Pack 5, Windows NT 4.0, Windows 95 OSR 2, Office 97, Visual Basic 5.0 e outros produtos.

O que faz tudo essa média para desenvolvedores que usar o Visual Basic?

Visual Basic 3.0 e versões anteriores convertem todos os anos de dois dígitos para o 1900s.

Visual Basic 4.0 (16 bits) converte todos os anos de dois dígitos para o século da data atual do sistema. Dependendo da função usada, o Visual Basic converte a data com base em padrões em bibliotecas de automação de 16 bits ou a biblioteca de tempo de execução. Os padrões nas bibliotecas de automação de 16 bits não foram modificados desde o Visual Basic 4.0 liberado portanto, o comportamento é consistente, independentemente de qual função data é usada.

Visual Basic 4.0 (32-bit) converte anos de dois dígitos para anos de quatro dígitos com base no padrão nas bibliotecas de automação, exceto quando usando a função DateSerial que converte todos os anos de dois dígitos para o século da data atual do sistema. As bibliotecas de automação de 32 bits (OleAut32.dll versão 2.10) fornecida quando o Visual Basic 4.0 foi lançado convertido todos os anos de dois dígitos para o século da data atual do sistema. Bibliotecas de automação de 32 bits posteriores (versão OleAut32.dll 2,20 e posterior) Converter anos de dois dígitos para o 1900s se o ano de dois dígitos é entre 30 e 99. Se o ano de dois dígitos é entre 00 e 29, a data é convertida para o 2000s.

Versões do Visual Basic subseqüentes para 4.0, anos de dois dígitos de converter para anos de quatro dígitos com base no padrão nas bibliotecas de automação para todas as funções de data. Visual Basic 5.0 fornecido com versão 2.20.4054 que converte os anos de dois dígitos para o 1900s se o ano de dois dígitos é entre 30 e 99. Se o ano de dois dígitos é entre 00 e 29, a data é convertida para o 2000s.

E se eu não como esses padrões?

Convém utilizar seu próprio conjunto de regras em vez de confiar nos padrões nativos para o Visual Basic. Por exemplo, convém inserir apenas um ano de dois dígitos e ter 00 para 49 correspondentes para os anos 2000 a 2049 e tem 50 a 99 correspondem aos anos 1950 a 1999.

Ao aceitar uma seqüência de datas do usuário, o formato da seqüência de caracteres para determinar o número de dígitos inserido para o ano de teste. De acordo com as regras para este aplicativo de exemplo, 1, 11/45 é no ano 2045 e não no ano 1945. Dentro do código para o aplicativo, altere a seqüência para usar o ano de quatro dígitos apropriado, converter essa seqüência de data com o ano de quatro dígitos em uma variável de data.

Código de exemplo

O código a seguir avalia os dados inseridos em uma caixa de texto chamada txtDate quando você clica em cmdConvertDate. Se a data contém um ano de dois dígitos, a data é convertida em uma data do ano de quatro dígitos de acordo com a regra do exemplo. O código, em seguida, exibe a data inicial inserida, o ano completo como convertido pelo código de acordo com a regra exemplo, e o ano completo é convertido pelos padrões nativos para o Visual Basic. Finalmente, a data exibida no txtDate é convertida em uma data não ambígua com o ano de quatro dígitos apropriado.

Depois que você tiver desenvolvido código para manipular suas próprias regras para interpretar anos de dois dígitos, você pode criar esse código em um controle personalizado de 32 bits com o controle criação Edition do Visual Basic. Para obter mais informações sobre este produto e criar seus próprios controles personalizados, consulte o site do Microsoft Visual Basic em:

http://www.microsoft.com/vbasic

Esse código requer que as datas ser inserido no formato mm/dd/aa, mas facilmente pode ser alterada para lidar com um formato de data diferentes:

   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
				

Referências

Ajuda do Microsoft Visual Basic arquivo; pesquisar em: data e tipos de dados Variant; IsDate função; funções CDATA e CVDate;

(c) 1997 Microsoft Corporation, todos os direitos reservados. Contribuições de David Sceppa, Microsoft Corporation

Propriedades

ID do artigo: 162718 - Última revisão: sábado, 22 de fevereiro de 2014 - Revisão: 3.3
A informação contida neste artigo aplica-se a:
  • 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 de 16 bits Enterprise Edition
  • Microsoft Visual Basic 4.0 de 32 Bits Enterprise Edition
  • Microsoft Visual Basic 2.0 Standard Edition
  • Microsoft Visual Basic 3.0 Professional Edition
  • Microsoft Visual Basic 1.0 Standard Edition
Palavras-chave: 
kbnosurvey kbarchive kbmt kbhowto KB162718 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 162718

Submeter comentários

 

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