web-dev-qa-db-fra.com

VBScript Comment puis-je formater la date?

Je veux que la date ressemble à MM-JJ-AAAA au lieu de MM/JJ/AAAA .

20
Cocoa Dev
0 = vbGeneralDate - Default. Returns date: mm/dd/yy and time if specified: hh:mm:ss PM/AM.
1 = vbLongDate - Returns date: weekday, monthname, year
2 = vbShortDate - Returns date: mm/dd/yy
3 = vbLongTime - Returns time: hh:mm:ss PM/AM
4 = vbShortTime - Return time: hh:mm


d=CDate("2010-02-16 13:45")
document.write(FormatDateTime(d) & "<br />")
document.write(FormatDateTime(d,1) & "<br />")
document.write(FormatDateTime(d,2) & "<br />")
document.write(FormatDateTime(d,3) & "<br />")
document.write(FormatDateTime(d,4) & "<br />")

Si vous souhaitez utiliser un autre format, vous devrez créer votre propre fonction, analyser Mois, Année, Jour, etc. et les regrouper dans le format de votre choix.

Function myDateFormat(myDate)
    d = WhatEver(Day(myDate))
    m = WhatEver(Month(myDate))    
    y = Year(myDate)
    myDateFormat= m & "-" & d & "-" & y
End Function

Function WhatEver(num)
    If(Len(num)=1) Then
        WhatEver="0"&num
    Else
        WhatEver=num
    End If
End Function

edit: fonction ajoutée pour formater le jour et le mois en 0n si la valeur est inférieure à 10.

37
stian.net

Suggérez d'appeler 'Maintenant' une seule fois dans la fonction pour vous protéger contre les modifications des minutes, voire du jour, pendant son exécution.

Ainsi:

Function timeStamp()
    Dim t 
    t = Now
    timeStamp = Year(t) & "-" & _
    Right("0" & Month(t),2)  & "-" & _
    Right("0" & Day(t),2)  & "_" & _  
    Right("0" & Hour(t),2) & _
    Right("0" & Minute(t),2) '    '& _    Right("0" & Second(t),2) 
End Function
17
Sam

La sortie de FormatDateTime dépend de la configuration dans les paramètres régionaux du Panneau de configuration. Ainsi, dans d'autres pays, FormatDateTime (d, 2) peut, par exemple, renvoyer aaaa-MM-jj.

Si vous voulez que votre sortie soit "invariante par la culture", utilisez la solution de stian.net. Si vous n'aimez tout simplement pas les barres obliques dans les dates et que le format de la date ne vous intéresse pas dans d'autres pays, vous pouvez simplement utiliser

Replace(FormatDateTime(d,2),"/","-")
9
MBu

'pour les noms de fichiers uniques que j'utilise

Dim ts, logfile, thisScript

thisScript = LEFT(Wscript.ScriptName,LEN(Wscript.ScriptName)-4) ' assuming .vbs extension

ts = timeStamp
logfile = thisScript & "_" & ts

' ======
Function timeStamp() 
    timeStamp = Year(Now) & "-" & _
    Right("0" & Month(Now),2)  & "-" & _
    Right("0" & Day(Now),2)  & "_" & _  
    Right("0" & Hour(Now),2) & _
    Right("0" & Minute(Now),2) '    '& _    Right("0" & Second(Now),2) 
End Function
' ======
4
qaweb

Bien que la réponse soit fournie, j'ai trouvé une solution plus simple:

Rendez-vous amoureux:

01/20/2017

En faisant remplacer

CurrentDate = replace(date, "/", "-")

Il produira:

01-20-2017
1
vpetkovic

Cet extrait résout également cette question avec datePart function . J'ai également utilisé l'astuce right() pour effectuer une rpad(x,2,"0").

option explicit

Wscript.Echo "Today is " & myDate(now)

' date formatted as your request
Function myDate(dt)
    dim d,m,y, sep
    sep = "-"
    ' right(..) here works as rpad(x,2,"0")
    d = right("0" & datePart("d",dt),2)
    m = right("0" & datePart("m",dt),2)
    y = datePart("yyyy",dt)
    myDate= m & sep & d & sep & y
End Function
0
gwarah