robinM
asked on
VBScript and UK Dates
Using VBScript in Active Server Pages
How can I convert dates to UK Format -> dd:mm:yy
I don't want to convert to a string as I am querying an SQL database. Basically I want it so that users of the site can enter the date in the UK format only, as they are used to. I dont mind if VBscript converts to US Format behind the scenes. This will even be useful for querying the SQL database. The code that needs changing follows...I am collecting two dates.
if Request.Form("Date1") <> "" then
date1 = Request.Form("Date1")
else
date1 = #01/01/98# 'converts to a date
end if
if Request.Form("Date2") <> "" then
date2 = Request.Form("Date2")
else
date2 = Date
end if
How can I convert dates to UK Format -> dd:mm:yy
I don't want to convert to a string as I am querying an SQL database. Basically I want it so that users of the site can enter the date in the UK format only, as they are used to. I dont mind if VBscript converts to US Format behind the scenes. This will even be useful for querying the SQL database. The code that needs changing follows...I am collecting two dates.
if Request.Form("Date1") <> "" then
date1 = Request.Form("Date1")
else
date1 = #01/01/98# 'converts to a date
end if
if Request.Form("Date2") <> "" then
date2 = Request.Form("Date2")
else
date2 = Date
end if
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
rupert, format does not exists in vbscript.
formatdate does and that is not how you would use it either.
and that will only display the date, not validate whether or not the date entered is in UK/US format.
formatdate does and that is not how you would use it either.
and that will only display the date, not validate whether or not the date entered is in UK/US format.
I'd remove my answer, if I could!
ASKER
PBall, thanks for the CheckValidity function
I worked it out the answer myself after much hassle, here it is
Converting to UK
dateselected = Day(date()) &"/" &Month(date()) &"/" &Right(Year(date()), 2)
Converting back to US (for putting into SQL for example)
USDate = Month(dateselected) &"/" &Day(dateselected) &"/" &Right(Year(dateselected), 2)
I worked it out the answer myself after much hassle, here it is
Converting to UK
dateselected = Day(date()) &"/" &Month(date()) &"/" &Right(Year(date()), 2)
Converting back to US (for putting into SQL for example)
USDate = Month(dateselected) &"/" &Day(dateselected) &"/" &Right(Year(dateselected),
btw. you really use : to separate the date elements? heh.
I'd suggest setting a reminder to the date field such as:
Birthday _____________ (dd:mm:yy)
or alternative:
Birthday Day ___ Month ___ Year ____
Since you are using ASP, I might as well suggest this: try ASP Calendar Control, it's available at http://www.fortunecity.com/meltingpot/headfort/175/asp/control/calendar/
date validation routine in vbscript:
function isUKDate( dt )
'assuming delimited by :
dim v, d, m, y, l, i
l = ":"
v = trim(dt)
i = instr(v,l)
'delimiter not found, exit function
if (i = 0 or isNull(i))
isUKDate = false
exit function
end if
d = trim(left(v,i-1)) 'retrieve the date value
v = mid(v,i+1) 'chop off the day part
i = instr(v,l)
'delimiter not found, exit function
if (i = 0 or isNull(i)) then
isUKDate = false
exit function
end if
m = trim(left(v,i-1)) 'get the month
v = mid(v,i+1) 'chop off the month
y = cLng(trim(v)) 'get the year part
m = cInt(m)
if m < 1 or m > 12 then
isUKDate = false
exit function
end if
i = monthlength(m)
d = cInt(d)
if d < 1 or d > i then
isUKDate = false
exit function
end if
isUKDate = true
end function
function monthlength( m, y )
dim ml
if m = 1 or m = 3 or m = 5 or m = 7 or _
m = 8 or m =10 or m = 12 then
ml = 31
else
if m = 2 then 'handle february
if isLeapYear(y) then
ml = 29
else
ml = 28
end if
else
ml = 30
end if
end if
monthlength = ml
end function
function isLeapYear( year )
'it is leap year when the year is divisible by 4
'but not divisible by 100,
'but if the year is divisible by 400 then it is.
isLeapYear = ((year mod 4 = 0) and (year mod 100 <> 0)) or (year mod 400 = 0)
end function
to use it:
if isUKDate(document.form.dat
msgbox "Splendid. You have entered the date correctly. Well done."
else
msgbox "Sorry, old chap. I would suggest you to go back and study back how the date is supposed to be entered here in UK."
end if