VBS:返回格式化日期

时间:2014-02-08 07:40:37

标签: vbscript

我正在执行一个VBS文件,该文件返回另一个文件的修改日期:

Set objFS=CreateObject("Scripting.FileSystemObject")
Set objArgs = WScript.Arguments
strFile= objArgs(0)
WScript.Echo objFS.GetFile(strFile).DateLastModified

但是我希望在返回之前将日期格式化为dd / MM / yyyy。

3 个答案:

答案 0 :(得分:2)

如演示herehttps://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