如果用户以dd / mm / yyyy格式输入日期为2011年6月1日(01/06/2011)
转换后,它将返回“2011年6月1日”,而不是“2011年6月1日”。让我解释它是如何在2011年1月1日转换它的。
User entered = 01/06/2011 (dd/mm/yyyy) i.e. 1st june 2011
After conversion it returns = 01/06/2011 (mm/dd/yyyy) i.e. 6th jan 2011
请记住:用户日期格式在设计时是未知的。它是从数据库中提取并存储在变量(字符串)
中是否有任何解决方案。
请提供与VB6相关的解决方案,而不是.net
答案 0 :(得分:0)
您可以使用以下命令查找用户区域日期格式设置:
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
Public Function GetUserShortDateFormat() As String
Dim strLocale As String
Dim lngRet As Long
'Get short date format
strLocale = Space(255)
lngRet = GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SSHORTDATE, strLocale, Len(strLocale))
strLocale = Left(strLocale, lngRet - 1)
GetUserShortDateFormat = strLocale
End Function
但这不能保证用户实际以此格式输入。
如果您将数据库日期列字段中的日期读入日期变量,则它将采用此格式。
答案 1 :(得分:0)
很好,我已经编写了自己的方法来将日期分解为令牌,因为我找不到其他方法来解决问题。