FORMATANDO DATAS
Estou com um problema é o seguinte na hora de formatar datas. Na base dados é gravado no formato mm/dd/yyyy. Montei uma função para colocar a data no formato brasileiro.
Só que acontece o seguinte se eu cadastrar com uma data 06/05/2007 (dd/mm/yyyy), na base de dados vai ficar 5/6/2007. Até ai tudo bem, mas na hora de usar a função, qdo seria pra aparecer 6/5/2007, ele aparece como 5/6/2007.
A função neste caso não está reconhencoo o que é data e mês. Alguém saberia uma forma correta para fazer isso?
Obrigado pela atenção!
Function FormataData(Data)
If Data <> "" Then
FormataData = Right("0" & DatePart("d", Data),2) & "/" & Right("0" & DatePart("m", Data),2) & "/" & DatePart("yyyy", Data)
End If
End Function
Só que acontece o seguinte se eu cadastrar com uma data 06/05/2007 (dd/mm/yyyy), na base de dados vai ficar 5/6/2007. Até ai tudo bem, mas na hora de usar a função, qdo seria pra aparecer 6/5/2007, ele aparece como 5/6/2007.
A função neste caso não está reconhencoo o que é data e mês. Alguém saberia uma forma correta para fazer isso?
Obrigado pela atenção!
Amigo,
veja as configurações regionais do seu micro.
sds
Emanuel
veja as configurações regionais do seu micro.
sds
Emanuel
é so vc gravar no banco do jeito que vc quiser
rs!data=format(data,"mm/dd/yyyy")
rs!data=format(data,"mm/dd/yyyy")
Deixa eu mostrar como eu fiz, acho que vai ficar mais fácil pra visualizar.
Primeiro meu mudei para utlizar a datas e moedas no padrão americado:
Session.LCID = 1033
E criei 2 funcções:
Para formatar as datas no padrão brasileiro (dd/mm/yyyy)
Para formatar as datas no padrão americano (mm/dd/yyyy)
Sempre quando vou gravar na base de dados eu uso a função FormataDataAmericano e pra eu visualizar na página uso FormataData
Acontece q com certas datas não sei porque ele meio que se perde não trazendo corretamente. Geramente são datas tipo: 5/6/2007 ou 4/5/2007
Primeiro meu mudei para utlizar a datas e moedas no padrão americado:
Session.LCID = 1033
E criei 2 funcções:
Para formatar as datas no padrão brasileiro (dd/mm/yyyy)
Function FormataData(Data)
If Data <> "" Then
FormataData = Right("0" & DatePart("d", Data),2) & "/" & Right("0" & DatePart("m", Data),2) & "/" & DatePart("yyyy", Data)
End If
End Function
Para formatar as datas no padrão americano (mm/dd/yyyy)
Function FormataDataAmericano(Data)
Dim v
v = Right("0" & Mid(Data,4, 2),2) & "/" & Right("0" & Left(Data, 2),2) & "/" & DatePart("yyyy", Data)
v = Cdate(v)
FormataDataAmericano = v
End Function
Sempre quando vou gravar na base de dados eu uso a função FormataDataAmericano e pra eu visualizar na página uso FormataData
Acontece q com certas datas não sei porque ele meio que se perde não trazendo corretamente. Geramente são datas tipo: 5/6/2007 ou 4/5/2007
Bom companheiro se foi isso que eu entendi por que vc nao utiliza o comando FORMAT exemplo:
'para formata para a data (padrão brasileiro)
dim Data
Data = format("6/5/2007","dd/mm/yyyy") ' resultado 06/05/2007
'para formata para a data padrão americano
data = format("6/5/2007","mm/dd/yyyy) ' resultado 05/06/2007
Consulte o help do vb para mais informações sobre o format.
'para formata para a data (padrão brasileiro)
dim Data
Data = format("6/5/2007","dd/mm/yyyy") ' resultado 06/05/2007
'para formata para a data padrão americano
data = format("6/5/2007","mm/dd/yyyy) ' resultado 05/06/2007
Consulte o help do vb para mais informações sobre o format.
Cara na boa, para vc não ter problemas com datas (falo por experiencia propria), você tem que pensar no seguinte:
- Aonde vai rodar seu aplicativo? Pois na hora de desenvolver, geralmente é em um XP com as configurações regionais do Brasil, mas quando vc colocar para rodar, as vezes o servidor é grindo, provavelmente com as configurações regionais americanas, logo vc vai ter problemas com esse tipo de condificação.
Para vc não ter problemas com datas em um servidor com qualquer configuração regional, grave no banco de dados a data SEMPRE no formato internacional, no SQL Server é yyyy-MM-dd por exemplo: '2006-05-27'
Na hora de exibir, será de acordo com as configurações regionais, nesse casso, use o session.LCID para isso, no caso do brasil é 1046, assim, vc pode usar as constantes de formatação com a função FormatDateTime, as constantes vão de 0 até 4, caso queira formatar de uma forma diferente, aàcrie uma função especifica para isso.
Mas lembre-se, sempre na hora de gravar no banco, grave em um formato internacional aceito pelo mesmo, geralmente é ano-mes-dia!
- Aonde vai rodar seu aplicativo? Pois na hora de desenvolver, geralmente é em um XP com as configurações regionais do Brasil, mas quando vc colocar para rodar, as vezes o servidor é grindo, provavelmente com as configurações regionais americanas, logo vc vai ter problemas com esse tipo de condificação.
Para vc não ter problemas com datas em um servidor com qualquer configuração regional, grave no banco de dados a data SEMPRE no formato internacional, no SQL Server é yyyy-MM-dd por exemplo: '2006-05-27'
Na hora de exibir, será de acordo com as configurações regionais, nesse casso, use o session.LCID para isso, no caso do brasil é 1046, assim, vc pode usar as constantes de formatação com a função FormatDateTime, as constantes vão de 0 até 4, caso queira formatar de uma forma diferente, aàcrie uma função especifica para isso.
Mas lembre-se, sempre na hora de gravar no banco, grave em um formato internacional aceito pelo mesmo, geralmente é ano-mes-dia!
Cara você pode usar esta função em javascript
function FormataData(input,pEvent) {
var evt = new CrossEvent(pEvent);
var keyCode = evt.keyCode;
var charCode = evt.charCode;
var strBarra = "/";
var strCheck = '0123456789';
if (keyCode == 8 || keyCode == 9) return true;
key = String.fromCharCode(charCode);
if (strCheck.indexOf(key) == -1) return false;
if (keyCode != 8 ){
if(input.value.length == 2){input.value = input.value+strBarra}
else if(input.value.length == 5){input.value = input.value+strBarra}
}
}
E na hora de retornar o valor para printar na tela ou incluir este valor no BD use assim:
SESSION.LCID = 1033
data = CDate(data)
Comandos....
Session.LCID = 1046
Ai pessoal, muito obrigado pelas dicas, precisando estamos ai...
Acho q a melhor solução é essa mesma, na hora de gravar usar o padrão americano Session.LCID = 1033 e na hora de visualizar o brasileiro, Session.LCID = 1046
Vou fazer uns testes pra ver o que dá... Depois posto aqui pra vocês saberem o resultado!
Acho q a melhor solução é essa mesma, na hora de gravar usar o padrão americano Session.LCID = 1033 e na hora de visualizar o brasileiro, Session.LCID = 1046
Vou fazer uns testes pra ver o que dá... Depois posto aqui pra vocês saberem o resultado!
ei ei!!! o seguinte, existe a função CONVERT ou CAST na propria linguagem sql... assim vc nunca terá problemas com conversão de datas!!! vale a pena dar uma pesquisada... eu sempre uso!
Tópico encerrado , respostas não são mais permitidas