VBScript Как я могу отформатировать дату? - PullRequest
20 голосов
/ 25 января 2012

Я хочу, чтобы дата выглядела как ММ-ДД-ГГГГ вместо ММ / ДД / ГГГГ .

Ответы [ 6 ]

37 голосов
/ 25 января 2012
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.

19 голосов
/ 31 января 2014

Предложите вызывать «Сейчас» только один раз в функции для защиты от изменения минуты или даже дня во время выполнения функции.

Таким образом:

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
9 голосов
/ 25 января 2012

Выходные данные FormatDateTime зависят от конфигурации в региональных настройках панели управления. Таким образом, в других странах FormatDateTime (d, 2) может, например, возвращать гггг-ММ-дд.

Если вы хотите, чтобы ваш вывод был «инвариантным для культуры», используйте myDateFormat () из решения stian.net. Если вам просто не нравятся косые черты в датах и ​​вас не интересует формат даты в других странах, вы можете просто использовать

Replace(FormatDateTime(d,2),"/","-")
5 голосов
/ 03 января 2014

'для уникальных имен файлов, которые я использую

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
' ======
1 голос
/ 13 февраля 2017

Этот фрагмент также решает этот вопрос с помощью функции 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
0 голосов
/ 20 января 2017

Хотя ответ предоставлен, я нашел более простое решение:

Дата:

01/20/2017

Выполнив замену

CurrentDate = replace(date, "/", "-")

Будет выведено:

01-20-2017
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...