【问题标题】:VB Script date formats "YYYYMMDDHHMMSS"VB 脚本日期格式“YYYYMMDDHHMMSS”
【发布时间】:2015-04-30 05:15:06
【问题描述】:

由于标题激增,我需要将 now() 函数格式化为以“YYYYMMDDHHMMSS”格式显示

我确实有一个尝试将其拆分的游戏,但这会丢弃我需要保留的前导零

mydt 下面的示例是“27/02/2015 13:02:27”

mydt = now() 

MSGBOX Year(mydt)& Month(mydt)& Day(mydt)& Hour(mydt)& Minute(mydt)& second(mydt)

这将返回“201522713227”

我需要它返回“20150227130227”我可以使用 if

【问题讨论】:

标签: string date vbscript formats


【解决方案1】:

感谢@Ekkehard.Horner 和@Bagger

我已经查看了您的建议,并根据我的需要选择了以下建议。

我选择了这个,因为它更实用/适应性更强,我可以根据需要交换和更改日期格式。

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

'-------------------------------------------------------------------

Dim dt : dt = now()

WScript.Echo sprintf("{0:yyyyMMddhhmmss}", Array(dt))

这将返回所需格式 yyyyMMddhhmmss 的值

20150302110727

如果您只需要日期,您只需更改 sprintf

sprintf("{0:yyyyMMdd}", Array(dt))

只想要时间

sprintf("{0:hhmmss}", Array(dt))

等等……

【讨论】:

    【解决方案2】:

    旧帖子,但正在寻找并偶然发现。结束了以下示例,该示例也可用作单线...

    wscript.echo DateString(now())
    
    Function DateString(dDate)
        DateString = Year(dDate)& right("0" & Month(dDate),2) & right("0" & Day(dDate),2) & right("0" & Hour(dDate),2) & right("0" & Minute(dDate),2) & right("0" & second(dDate),2)
    End Function
    

    【讨论】:

      【解决方案3】:

      这是我用来使它变得更好的完整方法。 适合为 SQL 解析数据。

      function getDateFormatedWithDash(DateVal)
          rtnDateStr = year(DateVal)
          m=month(DateVal)
          d=day(DateVal)
          h=Hour(DateVal)
          Min=Minute(DateVal)
          sec=second(DateVal)
      
          if month(DateVal)<10 then
              m="0"&month(DateVal)
          end if
      
          if day(DateVal)<10 then
              d="0"&day(DateVal)
          end if
      
          if Hour(DateVal)<10 then
              h="0"&Hour(DateVal)
          end if  
      
          if Minute(DateVal)<10 then
              Min="0"&Minute(DateVal)
          end if  
      
          if second(DateVal)<10 then
              sec="0"&second(DateVal)
          end if
      
      
          rtnDateStr = rtnDateStr&"-"&m&"-"&d&" "&h&":"&Min&":"&sec
          getDateFormatedWithDash=rtnDateStr
      end function
      

      【讨论】:

        【解决方案4】:

        这行得通,你也可以使用正则表达式

        mydt = now() 
        wscript.echo (Month(mydt))
        mm = add0( Month(mydt))
        dd = add0( Day(mydt))
        hh = add0( Hour(mydt))
        mn = add0( Minute(mydt))
        ss = add0( second(mydt))
        
        MSGBOX Year(mydt)& mm & dd & hh & mn & ss
        
        Function add0 (testIn)
         Select Case Len(testIn) < 2
           CASE TRUE
             add0 = "0" & testIn
           Case Else
             add0 = testIn
          End Select      
        End Function    
        

        【讨论】:

          【解决方案5】:

          这是一个正则表达式示例

            mydt = now()
          Set regEx = New RegExp
            With regEx
            .Pattern = "\b\d\b"
            .IgnoreCase = True
            .Global = True
           End With
          
          wscript.echo  Year(mydt)& _
            regEx.Replace(Month(mydt),"0" Month(mydt)) & _
            regEx.Replace(Day(mydt),"0" & Day(mydt)) &_
            regEx.Replace(Hour(mydt),"0" & Hour(mydt)) &_
            regEx.Replace(Minute(mydt),"0" & Minute(mydt)) & _ 
            regEx.Replace(second(mydt),"0" & second(mydt))
          
          Set RegularExpressionObject = nothing
          

          【讨论】:

            猜你喜欢
            • 2017-11-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-01-08
            • 1970-01-01
            相关资源
            最近更新 更多