Format current date and time in VBScript

Date formatting options are limited in Classic ASP by default, there is a function FormatDateTime() which can format your date is various ways based on the servers regional settings.

For more control over date formatting though there are built in date time functions

  • Year(date)Returns a whole number representing the year. Passing Date() will give back the current year.

  • Month(date)Returns a whole number between 1 and 12, inclusive, representing the month of the year. Passing Date() will return the current month of the year.

  • MonthName(month[, abbv])Returns a string indicating the specified month. Passing in Month(Date()) as the month will give back the current Month string. As suggested by @Martha

  • Day(date)Returns a whole number between 1 and 31, inclusive, representing the day of the month. Passing Date() will return the current day of the month.

  • Hour(time)Returns a whole number between 0 and 23, inclusive, representing the hour of the day. Passing Time() will return the current hour.

  • Minute(time)Returns a whole number between 0 and 59, inclusive, representing the minute of the hour. Passing Time() will return the current minute.

  • Second(time)Returns a whole number between 0 and 59, inclusive, representing the second of the minute. Passing Time() will return the current second.

IMPORTANT:
When formatting date / time values, always store the date / time value first. Also, any needed calculations (DateAdd() etc.) should be applied before attempting to format or you will get unexpected results.

The functions Month(), Day(), Hour(), Minute() and Second() all return whole numbers. Luckily there is an easy workaround that lets you pad these values quickly Right("00" & value, 2) what it does is append 00 to the front of the value then from the right take the first two characters. This ensures that all single digit values return prefixed with a 0.

Dim dd, mm, yy, hh, nn, ss
Dim datevalue, timevalue, dtsnow, dtsvalue

'Store DateTimeStamp once.
dtsnow = Now()

'Individual date components
dd = Right("00" & Day(dtsnow), 2)
mm = Right("00" & Month(dtsnow), 2)
yy = Year(dtsnow)
hh = Right("00" & Hour(dtsnow), 2)
nn = Right("00" & Minute(dtsnow), 2)
ss = Right("00" & Second(dtsnow), 2)

'Build the date string in the format yyyy-mm-dd
datevalue = yy & "-" & mm & "-" & dd
'Build the time string in the format hh:mm:ss
timevalue = hh & ":" & nn & ":" & ss
'Concatenate both together to build the timestamp yyyy-mm-dd hh:mm:ss
dtsvalue = datevalue & " " & timevalue

Call Response.Write(dtsvalue)

Note: You can build the date string in one call but decided to break it down into the three variables to make it easier to read.


Leave a Comment