2017-01-20 13 views
0

У меня есть ошибка в коде vb3, которую я установил как 31/12/2200, и перескакиваю ошибку, говоря, что формат не похож на локальную машину.vb3: изменить формат даты

Решение состоит в том, чтобы установить вручную 12/31/2200, но я заинтересован в том, чтобы получить локаль машины, чтобы сделать ее автоматически.

Как я могу изменить дату локализации в vb3?

+0

переменных = «31/12/2000» должен быть «12/31/2000» – David

ответ

1

Я не могу помочь вам с VB3. Я не видел этого много лет. Я могу дать вам что-то, что будет работать в VB5/VB6. Я не знаю, насколько хорошо он перейдет на VB3. Надеюсь, если это потребует работы, вы можете перевести его на VB3 или найти того, кто может. Вы захотите добавить соответствующую обработку ошибок.

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 Const LOCALE_USER_DEFAULT = &H400 
Private Const LOCALE_SSHORTDATE = &H1F ' short date format string 
Private Const LOCALE_SLONGDATE = &H20 ' long date format string 

Private Sub Form_Load() 
    Dim strMsg As String 

    strMsg = "Short Date Format: " & FormatShortDate(DateTime.Now) 
    strMsg = strMsg & vbCrLf & "Long Date Format: " & FormatLongDate(DateTime.Now) 

    MsgBox strMsg 

End Sub 

Private Function FormatShortDate(ByVal vDate As Date) As String 
    Dim strShortDateFormat As String 
    Dim lngRet As Long 
    Dim strReturn As String 

    'Get short date format 
    strShortDateFormat = Space(255) 
    lngRet = GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SSHORTDATE, strShortDateFormat, Len(strShortDateFormat)) 
    strShortDateFormat = Left(strShortDateFormat, lngRet - 1) 

    strReturn = Format$(vDate, strShortDateFormat) 

    FormatShortDate = strReturn 

End Function 

Private Function FormatLongDate(ByVal vDate As Date) As String 
    Dim strLongDateFormat As String 
    Dim lngRet As Long 
    Dim strReturn As String 

    'Get long date format 
    strLongDateFormat = Space(255) 
    lngRet = GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SLONGDATE, strLongDateFormat, Len(strLongDateFormat)) 
    strLongDateFormat = Left(strLongDateFormat, lngRet - 1) 

    strReturn = Format$(vDate, strLongDateFormat) 

    FormatLongDate = strReturn 

End Function 
+1

Воспоминанием о VB3 является то, что в качестве инструмента развития 16bit приложения, это было не самое локало известно, и вы вообще могли бы не делайте вызовы api для Windows, как это делал @jac здесь, для выполнения этих операций локали. – MarkL