【问题标题】:date format in VBSVBS 中的日期格式
【发布时间】:2013-05-07 16:03:29
【问题描述】:

我想在我的 中获取完整格式的日期。比如我把
DateParam = FormatDateTime(Date()-1, 2)

但它会返回

3/8/2012
我需要返回
03/08/2012

有谁知道如何解决这个问题?

【问题讨论】:

    标签: vbscript vbscript


    【解决方案1】:

    FormatDateTime 函数没用,因为它取决于用户特定和全局区域设置。

    最好的(以最少的努力获得最大的收益)解决方案——利用 .NET——在日期方面存在缺陷;再次因为对区域设置的依赖。

    如果您想要/需要推出自己的函数,请从 fmtDate() 之类的函数开始。

    Dim g_oSB : Set g_oSB = CreateObject("System.Text.StringBuilder")
    
    Function sprintf(sFmt, aData)
       g_oSB.AppendFormat_4 sFmt, (aData)
       sprintf = g_oSB.ToString()
       g_oSB.Length = 0
    End Function
    
    Function fmtDate(dtX)
      fmtDate = Join(Array(           _
           Right(100 + Month(dtX), 2) _
         , Right(100 +   Day(dtX), 2) _
         ,              Year(dtX)     _
      ), "/")
    End Function
    
    Dim dtYesterday : dtYesterday = Date() - 1
    WScript.Echo "Yesterday:", dtYesterday, GetLocale()
    WScript.Echo "sprintf (silly)  =>", sprintf("{0:MM/dd/yyyy}", Array(dtYesterday))
    WScript.Echo "sprintf (clumsy) =>", sprintf("{0:MM}/{0:dd}/{0:yyyy}", Array(dtYesterday))
    WScript.Echo "fmtDate          =>", fmtDate(dtYesterday)
    

    输出:

    Yesterday: 08.03.2012 1033
    sprintf (silly)  => 03.08.2012
    sprintf (clumsy) => 03/08/2012
    fmtDate          => 03/08/2012
    

    转念一想:

    转义“/”有助于使 sprintf() 可用:

    WScript.Echo "sprintf (silly me)  =>", sprintf("{0:MM\/dd\/yyyy}", Array(dtYesterday))
    

    输出:

    sprintf (silly me)  => 03/08/2012
    

    所以不要打扰 fmt* 函数,而是使用 .NET 格式。

    【讨论】:

    • 是否有资源列出了哪些 .NET 库向 VBScript 公开?
    • 这可能是我发现的在 VBScript 中处理日期的最优雅的解决方案。
    【解决方案2】:
    ThisDate = Date()
    
    MyDate = Right("0" & CStr(Month(ThisDate)), 2) & "/" & _
             Right("0" & CStr(Day(ThisDate)), 2) & "/" & CStr(Year(ThisDate))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-28
      • 2010-11-03
      • 2017-12-17
      • 1970-01-01
      • 2011-06-22
      • 1970-01-01
      相关资源
      最近更新 更多