VB Script formatos de fecha «AAAAMMDDHHMMSS»

Como título surgest necesito del formato de la función ahora () para mostrar en el «formato AAAAMMDDHHMMSS»

Me hicieron una obra de teatro tratando de dividir a cabo, pero esto quita los ceros a la izquierda que necesito para retener

ejemplo a continuación mydt fue «27/02/2015 13:02:27»

mydt = now() 

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

esto devuelve «201522713227»

la necesito para volver «20150227130227″ yo podría usar una si < 10 pero debe haber un impermeable manera

InformationsquelleAutor Mike Harris | 2015-02-27

4 Kommentare

  1. 8

    Gracias a @Ekkehard.Horner y @Bagger

    He revisado tu consejo y he elegido para ir con los de abajo, pero adaptado a mis necesidades.

    He elegido este, ya que es mucho más usable/adaptable puedo cambiar y cambiar los formatos de fecha, como se requiere.

    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))

    Devuelve el valor en formato aaaammddhhmmss

    20150302110727

    Si solo se requiere la fecha sólo tendría que cambiar el sprintf

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

    Solo quiero el tiempo

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

    y así sucesivamente…..

  2. 1

    Aquí es mi método que he utilizado para que sea agradable.
    Bueno para el análisis de los datos para 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
  3. 0

    Funciona esto, también se podría usar regex

    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    
  4. 0

    Aquí es un ejemplo de regex

      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

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea