CONVERTER DATA LONGA PRA DATA CURTA?

VILMARBR 04/09/2007 19:39:03
#234149
Dim sDateString As String, sTimeString As String
Dim dDate As Date, dTime As Date

sDateString = "terça-feira, 4 de setembro de 2007"
'ou
'sDateString = "February 12, 1969"

'>> Ambos dão pau de Type Mismatch
dDate = CVDate(sDateString)
dDate = CVDate(sDateString)

Converter hora longa dá certo:
sTimeString = "4:35:47 AM"
dTime = CDate(sTimeString)


ICEMAN 04/09/2007 21:10:48
#234152
ja tentou

Format(Now, "dddd, DD/MM/YYYY")' dia corrente, Dia /mes/ano

Format(Now, "dddd, DD") & " de " & Format(Now, "mmMM") & " de " & Format(Now, "YYYY")' dia corrente, dia mes por estenso, ano

format(now,"MMMM DD, YYYY")

ve se te ajuda.
VILMARBR 05/09/2007 11:41:54
#234243
Oi, o que eu quero é converter uma data longa para formato curto.
E o seu esquema não converte e qdo joga pra uma variável Date, dá erro "Type Mismatch" .

Enfim tem jeito ou não ?

[txt-color=#3333ff] Dim sDateString As String, sTimeString As String
Dim dDate As Date, dTime As Date

sDateString = "terça-feira, 4 de setembro de 2007"
dDate = Format$(sDateString, "dd/mm/yy hh:nn:ss")
Debug.Print Format$(sDateString, "dd-mm-yy hh:nn:ss")

sTimeString = "4:35:47 am"
dTime = CDate(sTimeString)
Debug.Print dTime[/txt-color]

Grato.
ANGELO 05/09/2007 16:56:27
#234340
Cara.. creio eu que não tenha jeito com o format.
O que vc pode fazer é o seguinte.
Cria uma função que le a string data e a converta para data curta.

VILMARBR 05/09/2007 17:21:30
#234345
Ok, só dá certo mesmo se data estiver no mínimo num formato:
"12 maio 2005"
"may 12 2005"

Com dia da semana, num vai de jeito algum !!

Mas converter qualquer data para "dia da semana, dia de mes de ano hora:minuto:segundo" , faz numa boa !!
Exemplos:
debug.Print Format$(#31/1/2001 5:04:23 PM#,"dddddd hh:nn:ss")
quarta-feira, 31 de janeiro de 2001 17:04:23

debug.Print Format$(now,"dddddd hh:nn:ss")
quarta-feira, 5 de setembro de 2007 17:21:37


Será que os programadores do VB x versão num pensaram nisto não [S61], fazer a conversão da volta ?

Até com VB.Net pelo jeito tb. não tem , já fucei todo wikipedia do VB.Net 2005 e nada achei também!!
USUARIO.EXCLUIDOS 05/09/2007 17:34:10
#234350
Resposta escolhida
VilmarBR,

Com certeza o que eu vou postar para você é uma gambiarra muito grande rs

Mas funciona rs...então ve ai ce vc precisar mesmo rs... a Funcção está sem consistencias do tipo (30/02) mas até ai é fácil inserir elas.
Basta chamar a funcção e passar toda a string da datalonga...
eu testei com:
quarta-feira, 5 de setembro de 2007
terça-feira, 4 de setembro de 2007

e funcionou, não coloquei as horas mas é simples tambem

Public Function ConverterDataLonga(data As String)
Dim s As String
s = data
s = Replace(s, "segunda-feira,", "")
s = Replace(s, "terça-feira,", "")
s = Replace(s, "quarta-feira,", "")
s = Replace(s, "quinta-feira,", "")
s = Replace(s, "sexta-feira,", "")
s = Replace(s, "sábado,", "")
s = Replace(s, "domingo,", "")
s = Replace(s, "de", "")

s = Replace(s, "janeiro", "1")
s = Replace(s, "fevereiro", "2")
s = Replace(s, "março", "3")
s = Replace(s, "abril", "4")
s = Replace(s, "maio", "5")
s = Replace(s, "junho", "6")
s = Replace(s, "julho", "7")
s = Replace(s, "agosto", "8")
s = Replace(s, "setembro", "9")
s = Replace(s, "outubro", "10")
s = Replace(s, "novembro", "11")
s = Replace(s, "dezembro", "12")
s = Replace(s, " ", "/")
Dim d As Date
data = s
MsgBox data
End Function

VILMARBR 05/09/2007 18:06:24
#234355
[S42] Legal Orlando.

Eu já tinha conseguido fazer umas gambis separando toda a data em partes com função Split e juntando as partes do Array criado, formando uma data curta
com estas partes.

No momento, para contornar esta limitação das versões VBs, só mesmo fazendo gambis (POG: programação orientada a gambiarras) ! [S25]
USUARIO.EXCLUIDOS 05/09/2007 18:11:49
#234356
Uma gambiarra um pouquinho mais profissional:

Public Function ConverterDataLonga(data As String) as String
For i = 1 To 12
data = Replace(data, MonthName(i), i)
Next
For i = 1 To 7
data = Replace(data, WeekdayName(i) & ",", "")
Next
data = Replace(data, " de ", "/")

ConverterDataLonga = data
End Function




Lembrando que o mérito do Ponto é do LANDOSP, fiz minha função em cima da lógica utilizada por ele.
Tópico encerrado , respostas não são mais permitidas