我正在执行一个VBS文件,该文件返回另一个文件的修改日期:
Set objFS=CreateObject("Scripting.FileSystemObject")
Set objArgs = WScript.Arguments
strFile= objArgs(0)
WScript.Echo objFS.GetFile(strFile).DateLastModified
但是我希望在返回之前将日期格式化为dd / MM / yyyy。
答案 0 :(得分:2)
如演示here和https://stackoverflow.com/a/21280396/603855,您可以使用.Net StringBuilder解决所有格式问题,而不依赖于区域设置或执行额外/特定工作:
Option Explicit
Class cFormat
Private m_oSB
Private Sub Class_Initialize()
Set m_oSB = CreateObject("System.Text.StringBuilder")
End Sub ' Class_Initialize
Public Function formatOne(sFmt, vElm)
m_oSB.AppendFormat sFmt, vElm
formatOne = m_oSB.ToString()
m_oSB.Length = 0
End Function ' formatOne
Public Function formatArray(sFmt, aElms)
m_oSB.AppendFormat_4 sFmt, (aElms)
formatArray = m_oSB.ToString()
m_oSB.Length = 0
End Function ' formatArray
End Class ' cFormat
Dim oFmt : Set oFmt = New cFormat
WScript.Echo oFmt.FormatOne("Today: {0:dd\/MM\/yyyy}", Date())
输出:
Today: 08/02/2014
答案 1 :(得分:0)
objFS.GetFile(strFile).DateLastModified
返回的值是日期/时间值。您可以使用格式化或转换函数将其格式化为字符串:
dateLastModified = objFS.GetFile(strFile).DateLastModified
WScript.Echo FormatDateTime(dateLastModified, 2)
这会将日期/时间值格式化为短日期。如何完成取决于您当前的区域设置。例如。在某些文化中,你会有“MM / dd / yyyy”,在其他文化中你会有“dd-MM-yyyy”等。
您还可以通过提取日期,月份和年份并将它们组合成一个字符串来完全控制格式:
dateLastModified = objFS.GetFile(strFile).DateLastModified
WScript.Echo Day(dateLastModified) & "/" & Month(dateLastModified) & "/" & Year(dateLastModified)
答案 2 :(得分:-1)
您可以只修改文件的日期并稍微分开..
因此,如果上次修改日期是2014年11月30日,则无论区域PC设置如何(格式化日期()忽略,都将返回30/11/2014
WScript.Echo convertDate(objFS.GetFile(strFile).DateLastModified)
Function convertDate(strDate)
convertDate = DatePart("d", strDate) & "/" & DatePart("m", strDate) & "/" & DatePart("yyyy", strDate)
End Function