Я хочу, чтобы дата выглядела как ММ-ДД-ГГГГ вместо ММ/ДД/ГГГГ.
VBScript Как я могу форматировать дату?
Ответ 1
0 = vbGeneralDate - Default. Returns date: mm/dd/yy and time if specified: hh:mm:ss PM/AM.
1 = vbLongDate - Returns date: weekday, monthname, year
2 = vbShortDate - Returns date: mm/dd/yy
3 = vbLongTime - Returns time: hh:mm:ss PM/AM
4 = vbShortTime - Return time: hh:mm
d=CDate("2010-02-16 13:45")
document.write(FormatDateTime(d) & "<br />")
document.write(FormatDateTime(d,1) & "<br />")
document.write(FormatDateTime(d,2) & "<br />")
document.write(FormatDateTime(d,3) & "<br />")
document.write(FormatDateTime(d,4) & "<br />")
Если вы хотите использовать другой формат, вам нужно будет создать свою собственную функцию и проанализировать месяц, год, день и т.д. и соединить их в предпочтительном формате.
Function myDateFormat(myDate)
d = WhatEver(Day(myDate))
m = WhatEver(Month(myDate))
y = Year(myDate)
myDateFormat= m & "-" & d & "-" & y
End Function
Function WhatEver(num)
If(Len(num)=1) Then
WhatEver="0"&num
Else
WhatEver=num
End If
End Function
edit: добавлена функция для форматирования дня и месяца как 0n
, если значение меньше 10
.
Ответ 2
Предложите вызов "Сейчас" только один раз в функции, чтобы защитить от минуты или даже дня, меняя во время выполнения функции.
Таким образом:
Function timeStamp()
Dim t
t = Now
timeStamp = Year(t) & "-" & _
Right("0" & Month(t),2) & "-" & _
Right("0" & Day(t),2) & "_" & _
Right("0" & Hour(t),2) & _
Right("0" & Minute(t),2) ' '& _ Right("0" & Second(t),2)
End Function
Ответ 3
Выходные данные FormatDateTime зависят от конфигурации в региональных настройках панели управления. Таким образом, в других странах FormatDateTime (d, 2) может, например, возвращать yyyy-MM-dd.
Если вы хотите, чтобы ваш вывод был "инвариантным для культуры", используйте myDateFormat() из решения stian.net. Если вам просто не нравятся косые черты в датах и вас не интересует формат даты в других странах, вы можете просто использовать
Replace(FormatDateTime(d,2),"/","-")
Ответ 4
'для уникальных имен файлов Я использую
Dim ts, logfile, thisScript
thisScript = LEFT(Wscript.ScriptName,LEN(Wscript.ScriptName)-4) ' assuming .vbs extension
ts = timeStamp
logfile = thisScript & "_" & ts
' ======
Function timeStamp()
timeStamp = Year(Now) & "-" & _
Right("0" & Month(Now),2) & "-" & _
Right("0" & Day(Now),2) & "_" & _
Right("0" & Hour(Now),2) & _
Right("0" & Minute(Now),2) ' '& _ Right("0" & Second(Now),2)
End Function
' ======
Ответ 5
Хотя ответ предоставляется, я нашел более простое решение:
Дата:
01/20/2017
Выполняя замену
CurrentDate = replace(date, "/", "-")
Он выведет:
01-20-2017
Ответ 6
Этот фрагмент также решает этот вопрос с помощью функции datePart. Я также использовал трюк right()
для выполнения rpad(x,2,"0")
.
option explicit
Wscript.Echo "Today is " & myDate(now)
' date formatted as your request
Function myDate(dt)
dim d,m,y, sep
sep = "-"
' right(..) here works as rpad(x,2,"0")
d = right("0" & datePart("d",dt),2)
m = right("0" & datePart("m",dt),2)
y = datePart("yyyy",dt)
myDate= m & sep & d & sep & y
End Function
Ответ 7
on error resume next
call timeStamp
Function timeStamp()
Dim t
t = Now
timeStamp = Month(t) & "/" & Day(t) & "/" & Year(t)
msgbox timeStamp
End Function