VB 脚本日期格式 "YYYYMMDDHHMMSS"
VB Script date formats "YYYYMMDDHHMMSS"
作为标题 surgest 我需要格式化 now () 函数以显示格式 "YYYYMMDDHHMMSS"
我确实玩过一个尝试将其拆分的游戏,但这会删除我需要保留的前导零
mydt 下面的示例是“27/02/2015 13:02:27”
mydt = now()
MSGBOX Year(mydt)& Month(mydt)& Day(mydt)& Hour(mydt)& Minute(mydt)& second(mydt)
这个returns“201522713227”
我需要它 return "20150227130227" 我可以使用 if < 10 但那里一定是更圆滑的方式
这有效,您也可以使用正则表达式
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
这是一个正则表达式示例
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
感谢@Ekkehard.Horner 和@Bagger
我已查看您的建议,并选择了以下适合我需要的建议。
我选择了这个,因为它更多useable/adaptable我可以根据需要交换和更改日期格式。
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))
此 returns 所需格式的值 yyyyMMddhhmmss
20150302110727
如果您只需要日期,您只需更改 sprintf
sprintf("{0:yyyyMMdd}", Array(dt))
只是想要时间
sprintf("{0:hhmmss}", Array(dt))
等等……
这是我用来让它变得漂亮的完整方法。
适合解析 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
旧 post 但正在寻找并偶然发现了这个。结束了以下示例,该示例也可以用作单行...
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
作为标题 surgest 我需要格式化 now () 函数以显示格式 "YYYYMMDDHHMMSS"
我确实玩过一个尝试将其拆分的游戏,但这会删除我需要保留的前导零
mydt 下面的示例是“27/02/2015 13:02:27”
mydt = now()
MSGBOX Year(mydt)& Month(mydt)& Day(mydt)& Hour(mydt)& Minute(mydt)& second(mydt)
这个returns“201522713227”
我需要它 return "20150227130227" 我可以使用 if < 10 但那里一定是更圆滑的方式
这有效,您也可以使用正则表达式
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
这是一个正则表达式示例
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
感谢@Ekkehard.Horner 和@Bagger
我已查看您的建议,并选择了以下适合我需要的建议。
我选择了这个,因为它更多useable/adaptable我可以根据需要交换和更改日期格式。
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))
此 returns 所需格式的值 yyyyMMddhhmmss
20150302110727
如果您只需要日期,您只需更改 sprintf
sprintf("{0:yyyyMMdd}", Array(dt))
只是想要时间
sprintf("{0:hhmmss}", Array(dt))
等等……
这是我用来让它变得漂亮的完整方法。 适合解析 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
旧 post 但正在寻找并偶然发现了这个。结束了以下示例,该示例也可以用作单行...
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