Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Liberdade

Problemas Com Datas

Recommended Posts

Boa Tarde, estou tentando resolver essa questão mas sem êxito até o momento.. eu tenho uma função que verifica se o usuário é do tipo 3 (ele pesquina a coluna tipo) se for tipo 3 ele verifica se ele é maior que 21 anos verificando a data de nascimento.

 

Mas o que acontece é o seguinte.. se eu rodo o projeto do vb.net funciona normal.. se eu rodo o projeto Web asp.net pela minha máquina (windows XP - português) usando o Visual Web Developer, roda normalmente, se eu pego esse projeto que rodei pelo web developer e mando para um diretório virtual do servidor de produção Windows 2003 - Inglês rodando (IIS) ele critica essa linha do meu arquivo XLS. dizendo que esse cara tem mais que 21 anos o que não é verdade.

 

Linha 5: 11/20/1998 <--- Usuários Tipo3 não podem ter mais que 21 anos de idade

 

 

Dentro do arquivo XLS tem 20/11/1998.. E ele pula algumas linhas (ou seja linhas que para ele são normais)

Se ainda nessa mesma linha eu mudo esse valor para 08/11/1998 ele passa sem problemas.. Dentro do meu webconfig existe..

 

<globalization uiCulture="pt-BR" />

 

já rodei com isso e sem isso e nada.

acabei de deixar assim o web config e mesmo assim nada..

 

<globalization

fileEncoding="utf-8"

requestEncoding="utf-8"

responseEncoding="utf-8"

culture="pt-BR"

uiCulture="pt-BR"

/>

 

Configurações regionais do servidor estavam tudo para português.. dd/mm/yyyy depois passei para tudo inglês mm/dd/yyyy e mesmo assim a mesma coisa aconteceu após a reinicialização do sitema.

 

Seguem o código onde são feitos os tratamentos com as datas.

 

Public Function Verifica_Tipo3(Optional ByVal Linha As Integer = COL_PrimeiraLinha, _								   Optional ByVal ColunaTP As Integer = COL_TipoUsuario, _								   Optional ByVal ColunaDN As Integer = COL_Nascimento, _								   Optional ByVal ApagarErros As Boolean = False, _								   Optional ByVal UltimaLinha As Integer = -1) As Boolean		Dim ok As Boolean = True		Dim tempData As DateTime		Dim tempStr As String = ""		Dim ii As Integer		If ApagarErros Then Erros.Clear()		If UltimaLinha < 0 Then UltimaLinha = _Planilha.Lines		For ii = Linha To UltimaLinha			Try				'...pega Tipo 3				tempStr = _Planilha.Cell(ii, ColunaTP).ToString				If tempStr = "3" Then					'...pega data e transforma					tempStr = _Planilha.Cell(ii, ColunaDN).ToString					tempData = TurboDateParse(tempStr)					If (DateTime.Now.Subtract(tempData).Days / 365) > 22 Then						Throw New Exception("Tipo 3 incorreto")					End If				End If			Catch ex As Exception				ok = False				tempStr = "Linha " & ii & ": " & _Planilha.Cell(ii, ColunaDN).ToString _						  & " <--- Usuários Tipo3 não podem ter mais que 21 anos de idade"				Erros.Add(tempStr)			End Try		Next		Return (ok)	End Function
essa é uma outra função que é utilizada para a conversão de datas.

Public Function TurboDateParse(ByVal Expression As Object, Optional ByVal DefaultValue As Object = Nothing) As Date		Dim dd As DateTime = Date.MinValue		Dim ss As String		Dim ok As Boolean = True		Try '... tertar direto			dd = Date.Parse(Expression.ToString)			GoTo ReturnValue		Catch			'... se há erro, continuar			ok = False		End Try		Try '... tenta transformar string			ss = Expression.ToString			If (ss = "") Then GoTo ReturnValue			If (ss.Length = 8) Then '... tenta inserir separadores				ss = ss.Substring(0, 2) & "/" & ss.Substring(2, 2) & "/" & ss.Substring(4, 4)				dd = Date.Parse(ss)			End If			Dim ii As Integer			ii = Val(ss)			dd = Date.Parse("30/12/1899") '... é o dia ZERO do sistema de datas			dd = dd.AddDays(ii) '... somar dias ao dia Zero para calcular a data correta			ok = True		Catch ex As Exception			dd = Date.MinValue		End TryReturnValue:		If (Not ok) AndAlso (DefaultValue IsNot Nothing) Then			dd = Date.Parse(DefaultValue)		End If		Return dd	End Function

O que pode ser?

 

Grata

Letícia

Compartilhar este post


Link para o post
Compartilhar em outros sites

que tal você converter as datas antes de fazer as comparações?receba todas em um mesmo padrão e grave da mesma forma.. sempre forçando para que fiquem idênticas..sempre tem confusão com parada de datas.. 31/12/2008 pra 12/31/2008 pra 20083112, etc etc..

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.