VERFIICAR FORMATO DE UMA DATA

FBUR 21/01/2015 16:31:31
#443917
Boa tarde!

Tenho vários formatos de datas para verificar:

d/mm/yyyy
d/mm/yy
d/m/yyyy
d/m/yy
dd/mm/yyyy
dd/mm/yy
dd/m/yyyy
dd/m/yy

Eu preciso identificar em qual formato ela está para dar o devido tratamento.

Existe alguma função no VB6 que me retorne o formato de uma data?

Abs
TUNUSAT 21/01/2015 19:43:00
#443921
FBUR,

Sei que tem como retornar [Ô]se é uma data[Ô].
Isto já é um passo para que você quer.

=====================================================
Função IsDate (Visual Basic)
https://msdn.microsoft.com/pt-br/library/00wf8zk9(v=vs.90).aspx
=====================================================

Tem como fazer o INVERSO que você quer:

=====================================================
Visual Basic 6 - Trabalhando com datas
http://www.macoratti.net/vb_datas.htm
=====================================================
Módulo 5 - Lição 19 - Funções do VBA - Funções de Data/Hora e Matemáticas
http://juliobattisti.com.br/cursos/excelavancado/modulo5/19.asp
=====================================================

Acho que você quer fazer vai ter que fazer do jeito mais legal ... desenvolver sua própria função.
O que você pode fazer é pegar a data e [Ô]fatiá-la[Ô]. Dai descobre quem é o dia, o mês e o ano.
Use a função [Ô]Format[Ô] para isto.
Use a função [Ô]InStr[Ô] ou a [Ô]InStrRev[Ô] para localizar onde estão os divisores [Ô]/[Ô].

Mas talvez tenha alguma API por ai que faça isto...
... epa! Achei algo promissor!

=====================================================
11 Date/Time API Function
http://www.ex-designz.net/apicat.asp?apicat=15
=====================================================

O que é isto [Ô]SYSTEMTIME Structure[Ô]?
Veja se ajuda.

[][ô]s,
Tunusat.
MILTONSILVA94 21/01/2015 20:32:40
#443922
FBUR, utilizo a rotina abaixo que serve para puxar automaticamente a data e hora(se a data do pc estiver errada, virá errado, pois puxa conforme o que está no pc), tenho um campo [ô]text[ô] e ele traz esta informação conforme abaixo:
lsql = lsql & [Ô][ô][Ô] & Format(Date, [Ô]dd/mm/yyyy[Ô]) & [Ô] [Ô] & Format(Time, [Ô]Long Time[Ô]) & [Ô][ô],[Ô]

Att.
Milton Silva
FBUR 21/01/2015 20:37:10
#443923
Obrigado amigos.

Eu já tenho uma função que, como diz o amigo TUNUSAT, [Ô]fatia[Ô] a data. Eu só preciso adaptar para todos os formatos.

Se tivesse uma função nativa, iria ajudar. Mas já estou trabalhando para atualizar a minha.

Abs!
FBUR 21/01/2015 21:06:00
#443924
Fiz de um jeito mais fácil:

If strData = Format(strData, [Ô]dd/mm/yyyy[Ô]) Then
lst1.AddItem strData
ElseIf strData = Format(strData, [Ô]dd/mm/yy[Ô]) Then
lst2.AddItem strData
ElseIf strData = Format(strData, [Ô]dd/m/yyyy[Ô]) Then
lst3.AddItem strData
ElseIf strData = Format(strData, [Ô]dd/m/yy[Ô]) Then
lst4.AddItem strData
ElseIf strData = Format(strData, [Ô]d/mm/yyyy[Ô]) Then
lst5.AddItem strData
ElseIf strData = Format(strData, [Ô]d/mm/yy[Ô]) Then
lst6.AddItem strData
ElseIf strData = Format(strData, [Ô]d/m/yyyy[Ô]) Then
lst7.AddItem strData
ElseIf strData = Format(strData, [Ô]d/m/yy[Ô]) Then
lst8.AddItem strData
End If

[ô]onde strData é a variável tipo String que recebe uma data qualquer.


Acabei de testar. Funciona muito bem. Agora é só criar uma função.

[]'s
TUNUSAT 22/01/2015 07:58:33
#443934
FBUR,

Perguntas...
Você viu as APIs?
Se a data vier em padrão ANSI (yyyy/MM/dd) ou padrão americano / europeu (MM/dd/yyyy) você não aceita / formata?

[][ô]s,
Tunusat.
MARCELO.TREZE 22/01/2015 22:09:23
#443966
minha pergunta é, é para saber os formatos de data do windows
MARCELO.TREZE 22/01/2015 22:13:57
#443967
para verificar as data do windows e se preciso alterar, coloque um textbox, um combo e um command button

Private Const LOCALE_SSHORTDATE = &H1F
Private Declare Function GetSystemDefaultLCID Lib [Ô]kernel32[Ô] () As Long
Private Declare Function SetLocaleInfo Lib [Ô]kernel32[Ô] Alias [Ô]SetLocaleInfoA[Ô] (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String) As Boolean
Private Declare Function GetLocaleInfo Lib [Ô]kernel32[Ô] Alias [Ô]GetLocaleInfoA[Ô] (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String, ByVal cchData As Long) As Long

Private Sub Command1_Click()
Dim lngLocale As Long
lngLocale = GetSystemDefaultLCID()
If SetLocaleInfo(lngLocale, LOCALE_SSHORTDATE, Combo1.Text) = False Then
MsgBox [Ô]Houve um erro ao definir o formato de data ![Ô]
Else
MsgBox [Ô]Formato de data atualizado para [Ô] & Combo1.Text & [Ô] com sucesso ![Ô]
Form_Load
End If
End Sub

Private Sub Form_Load()
Dim length As Long
Dim buf As String * 1024
Text1.Text = [Ô][Ô]
lLocal = GetSystemDefaultLCID()
length = GetLocaleInfo(lLocal, LOCALE_SSHORTDATE, buf, Len(buf))
Text1.Text = Left$(buf, length - 1)
With Combo1
.AddItem [Ô][Selecione um formato][Ô]
.AddItem [Ô]MM/dd/yyyy[Ô]
.AddItem [Ô]dd/MM/yyyy[Ô]
.AddItem [Ô]MM-dd-yyyy[Ô]
.AddItem [Ô]dd-MM-yyyy[Ô]


.ListIndex = 0
End With
End Sub



Tópico encerrado , respostas não são mais permitidas