VBS: вернуть форматированную дату
Я выполняю файл VBS, который возвращает дату изменения другого файла:
Set objFS=CreateObject("Scripting.FileSystemObject")
Set objArgs = WScript.Arguments
strFile= objArgs(0)
WScript.Echo objFS.GetFile(strFile).DateLastModified
Однако я хочу, чтобы дата была отформатирована в dd/MM/yyyy, прежде чем она будет возвращена.
3 ответа
Вы можете просто взять дату изменения файла и немного выделить ее.
Таким образом, если последняя дата изменения была 30.11.2014, она вернулась бы 30.11.2014 независимо от региональных настроек ПК (которые игнорирует FormatDateTime())
WScript.Echo convertDate(objFS.GetFile(strFile).DateLastModified)
Function convertDate(strDate)
convertDate = DatePart("d", strDate) & "/" & DatePart("m", strDate) & "/" & DatePart("yyyy", strDate)
End Function
Как показано здесь и на /questions/205578/funktsiya-formata-datyi-dlya-otobrazheniya-datyi-kak-13-yanvarya-2014/205580#205580, вы можете использовать.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
Значение, возвращаемое objFS.GetFile(strFile).DateLastModified
является значением даты / времени. Вы можете отформатировать это в строку, используя функцию форматирования или преобразования:
dateLastModified = objFS.GetFile(strFile).DateLastModified
WScript.Echo FormatDateTime(dateLastModified, 2)
Это отформатирует значение даты / времени в короткую дату. Как это сделать, зависит от ваших текущих региональных настроек. Например, в некоторых культурах у вас будет "ММ / ДД / ГГГГ", а в других культурах "ДД-ММ-ГГГГ" и т. Д.
Вы также можете получить полный контроль над форматированием, извлекая часть дня, месяца и года и объединяя их в строку:
dateLastModified = objFS.GetFile(strFile).DateLastModified
WScript.Echo Day(dateLastModified) & "/" & Month(dateLastModified) & "/" & Year(dateLastModified)