簡體   English   中英

VBScript 如何格式化日期?

[英]VBScript How can I Format Date?

我希望日期看起來像MM-DD-YYYY而不是MM/DD/YYYY

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

如果您想使用另一種格式,您必須創建自己的函數並解析月、年、日等,然后將它們以您喜歡的格式組合在一起。

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

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

編輯:如果值小於10則添加了將日和月格式化為0n功能。

建議在函數中只調用一次“Now”,以防止在函數執行過程中發生變化。

因此:

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

FormatDateTime 的輸出取決於控制面板中區域設置中的配置。 因此,在其他國家/地區,FormatDateTime(d, 2) 可能會返回 yyyy-MM-dd。

如果您希望您的輸出是“文化不變的”,請使用 stian.net 解決方案中的 myDateFormat() 。 如果您只是不喜歡日期中的斜線並且不關心其他國家/地區的日期格式,則可以使用

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

'對於我使用的唯一文件名

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
' ======

此代碼段還使用datePart 函數解決了這個問題。 我還使用了right()技巧來執行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

雖然提供了答案,但我找到了更簡單的解決方案:

日期:

01/20/2017

通過做替換

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

它會輸出:

01-20-2017

對於將來可能仍需要此功能的任何人。 我的答案與 qaweb 非常相似,只是不那么令人生畏。 VBS中似乎沒有很酷的自動簡單功能來格式化日期。 所以你必須手動完成。 我取了日期的不同組成部分並將它們連接在一起。

Dim timeStamp
timeStamp = Month(Date)&"-"&Day(Date)&"-"&Year(Date)
run = msgbox(timeStamp)

這將導致11-22-2019 (取決於當前日期)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM