Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 1 su 1

[VBA] Convertire Data da Italiano ad Inglese

  1. #1
    L'avatar di @Alex
    @Alex non è in linea Moderatore Globale
    Ovviamente non intendo una conversione di FORMATO da IT ad ANGLOSASSONE, per questo ci sono le funzioni apposite sulle Date.

    Mi riferisco alla conversione Stringa della data in formato TESTUALE da ITALIANO ad INGLESE.
    Esempio:
    #23/03/2012# ----> [March 23rd, 2012]

    Questo è il codice:
    Function DataIT2EN(DateIn As Date) As String
    On Error GoTo ERR_DataIT2EN
    Dim lngDT As Date
    Dim m As Integer
    Dim mEn As String

    Dim d As Integer
    Dim dEn As String

    Dim y As Long

    Dim strDateEN As String

    If RegExDate(CStr(DateIn)) = False Then
    DataIT2EN = "Invalid Date Format"
    Exit Function
    End If
    lngDT = Format$(DateIn, "yyyy-mm-dd")
    m = Month(DateIn)
    d = Day(DateIn)
    y = Year(DateIn)

    Select Case Right(d, 1)
    Case Is = 1
    dEn = d & "st"
    Case Is = 2
    dEn = d & "nd"
    Case Is = 3
    dEn = d & "rd"
    Case Is > 4
    dEn = d & "th"
    End Select

    Select Case m
    Case Is = 1
    mEn = "January"
    Case Is = 2
    mEn = "February"
    Case Is = 3
    mEn = "March"
    Case Is = 4
    mEn = "April"
    Case Is = 5
    mEn = "May"
    Case Is = 6
    mEn = "June"
    Case Is = 7
    mEn = "July"
    Case Is = 8
    mEn = "August"
    Case Is = 9
    mEn = "September"
    Case Is = 10
    mEn = "October"
    Case Is = 11
    mEn = "November"
    Case Is = 12
    mEn = "December"
    End Select
    strDateEN = mEn & " " & dEn & ", " & y
    DataIT2EN = strDateEN
    Exit_Here:
    Exit Function
    ERR_DataIT2EN:
    DataIT2EN = "Invalid Date Format"
    Resume Exit_Here
    End Function

    Function RegExDate(s As String) As Boolean
    Dim re As Variant
    Set re = CreateObject("vbscript.regexp")
    re.Pattern = "(((0[1-9]|[12]\d|3[01])\/(0[13578]|1[02])\/((19|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)\/(0[13456789]|1[012])\/((19|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])\/02\/((19|[2-9]\d)\d{2}))|(29\/02\/((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))"
    re.Global = True

    RegExDate = re.Execute(s).Count > 0

    Set re = Nothing
    End Function

    Migliorato il codice ed inserito la VALIDAZIONE con REGEXP della Data in quanto con Access il Formato con l'inversione M/G e l'anno a 2 Cifre possono generare errori.
    Ultima modifica di @Alex; 03-04-2012 11:21 
    ℹ️ Leggi di più su @Alex ...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Differenze tra Access2013 Italiano e Inglese
    Da Max.Riservo nel forum Microsoft Access
    Risposte: 5
    Ultimo Post: 11-02-2015, 10:14
  2. Dizionario Italiano Inglese
    Da Francesco48 nel forum Pausa caffè
    Risposte: 0
    Ultimo Post: 27-07-2013, 18:50
  3. Windows XP Home Edition in italiano/inglese
    Da gaprisco nel forum Microsoft Windows
    Risposte: 8
    Ultimo Post: 25-03-2011, 21:28
  4. Opzioni di Access in Italiano/Inglese
    Da 7nuvole nel forum Microsoft Access
    Risposte: 2
    Ultimo Post: 20-11-2010, 19:29
  5. Articolo: Newsletter: in italiano o in inglese ?
    Da DaniloChiantia nel forum Design, Internet Marketing e SEO
    Risposte: 0
    Ultimo Post: 29-11-2005, 16:50