VBScript如何格式化日期?

时间:2012-01-25 14:00:07

标签: date vbscript

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

7 个答案:

答案 0 :(得分:37)

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

编辑:如果值小于0n,则添加将日期和月份格式化为10的函数。

答案 1 :(得分:18)

建议在函数中调用“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

答案 2 :(得分:10)

FormatDateTime的输出取决于“控制面板”中“区域设置”中的配置。所以在其他国家,FormatDateTime(d,2)可能会返回yyyy-MM-dd。

如果您希望输出为“文化不变”,请使用stian.net解决方案中的myDateFormat()。如果你只是不喜欢日期中的斜杠而你不关心其他国家的日期格式,你可以使用

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

答案 3 :(得分:5)

'表示我使用的唯一文件名

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 :(得分:1)

虽然提供了答案,但我找到了更简单的解决方案:

日期:

HttpWebRequest Request = (HttpWebRequest)HttpWebRequest.Create(url);
_WebRequest.Method = "GET";
_WebRequest.AllowAutoRedirect = false;
using (HttpWebResponse response = (HttpWebResponse)_WebRequest.GetResponse()) {
string _response = new StreamReader(response.GetResponseStream()).ReadToEnd();
[...]

通过替换

01/20/2017

将输出:

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

答案 5 :(得分:0)

此代码段还使用datePart function解决了此问题。我还使用了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

答案 6 :(得分:0)

适用于将来可能仍需要此功能的任何人。我的答案与qaweb非常相似,只是没有那么吓人。在VBS中似乎没有很酷的自动简单功能来建立日期。因此,您必须手动进行操作。我采用了日期的不同部分并将它们连接在一起。

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

哪个会导致11-22-2019(取决于当前日期)