比如现在是2005年10月28日但vb中怎么返回2005年10月28日的日期格式呢? 日期格式要么是"MM-DD-YYYY",或是"DD-MM-YYYY"或是"YYYY-MM-DD"或是其它我应该怎么把当前这个日期的日期格式返回给我定义的变量呢?

解决方案 »

  1.   

    变量=format(日期,"YYYY-MM-DD")
    或变量=format(日期,"YYYYMMDD")

      

  2.   

    你可能理解错了.我要返回的是日期格式,不是日期内容.也就是说要返回"MM-DD-YYYY"或是其它日期格式给变量.而不是返回日期内容"10-28-2005"给变量.
      

  3.   

    你这提问本身就有问题,对于:10-11-2005你说是返回"MM-DD-YYYY"好呢?还是返回
    "DD-MM-YYYY"好?
      

  4.   

    因为我们规定日期格式必须是DD-MM-YYYY.但客户端电脑有可能设置的不是这个格式。所以程序就得去判断它是什么格式,如果不是我们规定的格式,就要求给出msgbox,提醒用户改正过来。
      

  5.   

    思路错误!!  日期的格式不重要,format 就是要取客户的日期(管他什么格式)来适应自己的程序!!!
      

  6.   

    '--------------------------------------------
    '---------------------------------------
    ' 函数名称:GetDateFormat()
    ' 功    能:取得系统日期格式串
    '           如 2004/07/16 ,返回 YYYY/MM/DD
    ' 作    者:阿勇 [email protected]
    ' 最后修改:2004-7-16
    '---------------------------------------
    '---------------------------------------------
    Function GetDateFormat() As String
        Dim tmpDate As Date, tmpCDate As String
        Dim dateSep As String, dateYMD As Variant, i As Integer
        
        tmpDate = Date          '取得当前日期作为分析用初始日期
        
        If Month(tmpDate) = Day(tmpDate) Then '日期中的日与月的值相同,不利于判断,取另一日期(加或减一个月)
            tmpDate = DateAdd("m", IIf(Month(tmpDate) = 1, 1, -1), tmpDate)
        End If
        
        '当年份为两位时,年份与月或日的值相同,取另一年(不停加年份直到有效为止)
        '如此处理后能识别如 07/07/07 (2007年7月7日)的特殊日期
        i = 1
        Do While CInt(Right(CStr(Year(tmpDate)), 2)) = Month(tmpDate) Or CInt(Right(CStr(Year(tmpDate)), 2)) = Day(tmpDate)
            tmpDate = DateAdd("y", i, tmpDate)
            i = i + 1
        Loop
        tmpCDate = tmpDate
        
        '取得日期分隔符
        For i = 1 To Len(tmpCDate)
            dateSep = Mid(tmpCDate, i, 1)
            If InStr("0123456789", dateSep) = 0 Then Exit For
        Next
        
        '分解日期后分析各段内容得到格式串
        dateYMD = Split(tmpCDate, dateSep)
        For i = 0 To 2
            Select Case CInt(dateYMD(i))
                Case Year(tmpDate), CInt(Right(CStr(Year(tmpDate)), 2))
                    GetDateFormat = GetDateFormat & dateSep & String(Len(dateYMD(i)), "Y")
                Case Month(tmpDate)
                    GetDateFormat = GetDateFormat & dateSep & String(Len(dateYMD(i)), "M")
                Case Day(tmpDate)
                    GetDateFormat = GetDateFormat & dateSep & String(Len(dateYMD(i)), "D")
            End Select
        Next
        If Left(GetDateFormat, 1) = dateSep Then GetDateFormat = Mid(GetDateFormat, 2)
        
    End Function
      

  7.   

    以前我问过这问题,有许多朋友给出了方法。
    不过都不太合我的要求,最后自己写了上面的函数,不过未必适合你。楼主可以参考以前的讨论贴:
    http://topic.csdn.net/TopicFiles/2004/07/16/13/3180911.xml
      

  8.   

    '--------------------------------------------------------
    'Purpose: Change system shortdate format
    'Example: Call mdlChangeSystemDateFormat("dd/MMM/yyyy")
    '--------------------------------------------------------Public Const LOCALE_SSHORTDATE As Long = &H1F
    Public Const LOCALE_USER_DEFAULT As Long = &H400Public Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal lLocale As Long, ByVal lLocaleType As Long, ByVal sLCData As String, ByVal lBufferLength As Long) As Long
    Public Declare Function SetLocaleInfo Lib "kernel32" Alias "SetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String) As LongPublic Function mdlChangeSystemDateFormat(strFormat As String) As Boolean    Dim strShortDateFormat As String, strBuffer As String
        Dim lBuffSize As Long, lRetVal As Long
        
        lBuffSize = 256
        strBuffer = String(lBuffSize, vbNullChar)
        
        'Get current short date format
        lRetVal = GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SSHORTDATE, strBuffer, lBuffSize)
        
        If lRetVal > 0 Then
            strShortDateFormat = Left(strBuffer, lRetVal - 1)
        Else
            Exit Function
        End If
        
        'If current short date format is different from your format, change it.
        'Note: MMM should be used in capital for month,small m are for minutes
        If UCase(strShortDateFormat) <> UCase(strFormat) Then
            lRetVal = SetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SSHORTDATE, strFormat)
        End If
        
        If lRetVal > 0 Then mdlChangeSystemDateFormat = True
    End Function
      

  9.   

    改一下上面的 GetDateFormat() 函数,刚发现当月份只有一位长时,它处理有BUG。
    '--------------------------------------------
    '---------------------------------------
    ' 函数名称:GetDateFormat()
    ' 功    能:取得系统日期格式串
    '           如 2004/07/16 ,返回 YYYY/MM/DD
    ' 作    者:阿勇 [email protected]
    ' 最后修改:2005-10-28
    '---------------------------------------
    '---------------------------------------------
    Function GetDateFormat() As String
        Dim tmpDate As Date, dateSep As String
        Dim dateYMD() As String, i As Integer
        
        '用 1999 年 1 月 2 日作为分析日期
        tmpDate = DateSerial(1999, 1, 2)
        
        '取得日期分隔符
        For i = 1 To Len(tmpDate)
            dateSep = Mid(tmpDate, i, 1)
            If InStr("0123456789", dateSep) = 0 Then Exit For
        Next
        
        '分解日期各段内容得到格式串
        dateYMD = Split(tmpDate, dateSep)
        For i = 0 To 2
            Select Case CInt(dateYMD(i))
                Case Year(tmpDate), CInt(Right(CStr(Year(tmpDate)), 2))
                    GetDateFormat = GetDateFormat & dateSep & String(Len(dateYMD(i)), "Y")
                Case Month(tmpDate)
                    GetDateFormat = GetDateFormat & dateSep & String(Len(dateYMD(i)), "M")
                Case Day(tmpDate)
                    GetDateFormat = GetDateFormat & dateSep & String(Len(dateYMD(i)), "D")
            End Select
        Next
        If Left(GetDateFormat, 1) = dateSep Then GetDateFormat = Mid(GetDateFormat, 2)
        
    End Function