[removed] Return formatted date

2019-01-15 22:26发布

I am executing a VBS file that returns the modified date of another file:

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

However I want the date to be formatted to dd/MM/yyyy before it is returned.

标签: vbscript
3条回答
我命由我不由天
2楼-- · 2019-01-15 22:44

As demonstrated here and https://stackoverflow.com/a/21280396/603855, vou can use a .Net StringBuilder to solve all your formatting problem without depending on locales or doing extra/specific work:

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())

output:

Today: 08/02/2014
查看更多
我欲成王,谁敢阻挡
3楼-- · 2019-01-15 23:08

You could just take the date modified of the file and pick it apart a bit..

So if the last modified date was 11/30/2014, this would return 30/11/2014 regardless of regional PC settings (which FormatDateTime() ignores)

WScript.Echo convertDate(objFS.GetFile(strFile).DateLastModified)

Function convertDate(strDate)
  convertDate = DatePart("d", strDate) & "/" & DatePart("m", strDate) & "/" & DatePart("yyyy", strDate)
End Function
查看更多
你好瞎i
4楼-- · 2019-01-15 23:11

The value returned by objFS.GetFile(strFile).DateLastModified is a date/time value. You can format this into a string using a formatting or conversion function:

dateLastModified = objFS.GetFile(strFile).DateLastModified
WScript.Echo FormatDateTime(dateLastModified, 2)

This will format the date/time value into a short date. How this is done depends on your current regional settings. E.g. in some cultures you will have "MM/dd/yyyy" and in other cultures "dd-MM-yyyy" etc.

You can also get complete control over the formatting by extracting the day, month and year part and putting them together into a string:

dateLastModified = objFS.GetFile(strFile).DateLastModified
WScript.Echo Day(dateLastModified) & "/" & Month(dateLastModified) & "/" & Year(dateLastModified)
查看更多
登录 后发表回答