Italian Controllo validità valore Date ??

MARCO C.

Active Member
Licensed User
Buongiorno a tutti,

sapete dirmi se esiste un funzione simile a IsNumber

IsNumber(Text as String) as Boolean

ma per verificare se una stringa contiene una data valida ?

Ho provato a lavorare con DateParse

"
DateTime.DateFormat="dd-MM-yyyy"
DateTime.DateParse(DateTmp)
"

ma i controlli da effettuare sono troppi :-(

Grazie
 

MARCO C.

Active Member
Licensed User
Ho trovato anche questa soluzione.... combinando 2 porzioni di codice che ho trovato

B4X:
Sub IsValidFormatDate(DateIn As String) As Boolean
    
'''    Log(IsValidDate("13-31-1212")) 'false
'''    Log(IsValidDate("12-31-1212")) 'true
    '''    Date Format ---> "dd-MM-yyyy"
    
    Dim matcher1 As Matcher
    matcher1 = Regex.Matcher("(\d\d)-(\d\d)-(\d\d\d\d)", DateIn)
    If matcher1.Find = True Then
        Dim days, months As Int
        days = matcher1.Group(1) 'fetch the second captured group
        months = matcher1.Group(2) 'fetch the first captured group.   
        If months > 12 Then Return False
        If days > 31 Then Return False
    '    Return True
    Else
        Return False
    End If
    
    
' se il formato è valido controlla i valori inseriti nel dd e MM ( 31-06 oppure 30-02 )
    
   DateTime.DateFormat = "dd-MM-yyyy"      'or what ever format is required
  
   Try
        DateTime.DateParse(DateIn)
      Return True
'      Log("Ok date")
   Catch
      Return False
'      Log("error date")
   End Try

    
End Sub

Che dite ? :rolleyes:
 

Sagenut

Expert
Licensed User
Longtime User
Non sono pratico di REGEX, però credo che avendo la pazienza di capire come scrivere la giusta stringa di controllo con un MATCH risolvi la cosa con poche righe di codice senza bisogno di successivi controlli.
Se comunque trovi una soluzione alternativa che funziona correttamente direi che non ci sono problemi.
In questo esempio il controllo avviene totalmente solo con il REGEX
https://www.regextester.com/99555
Forse la stringa và leggermente adattata, però puoi provare a mettere le date che vuoi e vedrai che ti dà il MATCH solo se scrivi una data valida.
Permette un solo tipo di errore:
il poter inserire date come 31/11/2019
 
Top