http://www.chrispearson.org/pages/programming/vbscript/datework/misc/weekday.asp
09h09
Friday, 21. November 2008

WEEKDAY

The WeekDay() function - and how it interacts with national language settings (NLS) on Windows servers - is a subject with some (mostly unnecessary) mystique.

The following investigates the WeekDay() function and its close relatives, mostly using today's date as shown in this first example

  The code that generated the displayed text

Today is 21. November 2008

<%
   Response.Write "Today is " & _
      Day(Now) & ". " & _
      MonthName(Month(Now)) & " " & _
      Year(Now)
%>


The following output is generated from the code shown to the right. Note the use of the constant vbMonday when specifying the week's start day. This and its associated constants are discussed below.


The defaults
Yesterday's Weekday(dtmYesterday)
is 5
Today's Weekday(dtmToday) is 6
Tomorrow's Weekday(dtmTomorrow) is 7
When the week starts on a Monday
Yesterday's Weekday(dtmYesterday, vbMonday) is 4
Today's Weekday(dtmToday, vbMonday)
is 5
Tomorrow's Weekday(dtmTomorrow, vbMonday) is 6

<%
   dtmYesterday = Now - 1
   dtmToday = Now
   dtmTomorrow = Now + 1
%>

. . .

   The defaults<br>
   Yesterday's Weekday(dtmYesterday) is
      <% = Weekday(dtmYesterday) %><br>
   Today's Weekday(dtmToday) is
      <% = Weekday(dtmToday) %><br>
   Tomorrow's Weekday(dtmTomorrow) is
      <% = Weekday(dtmTomorrow) %><br>
   When the week starts on a Monday<br>
   Yesterday's Weekday(dtmYesterday, vbMonday) is
      <% = Weekday(dtmYesterday, vbMonday) %><br>
   Today's Weekday(dtmToday) is
      <% = Weekday(dtmToday, vbMonday) %><br>
   Tomorrow's Weekday(dtmTomorrow) is
      <% = Weekday(dtmTomorrow, vbMonday) %>


These constants are provided: The examples below are the result of the code across on the right.

vbMonday = 2
vbTuesday = 3
vbWednesday = 4
vbThursday = 5
vbFriday = 6
vbSaturday = 7
vbSunday = 1
vbUseSystemDayOfWeek = 0

If no week start is specified then zero is assumed and the system's default is used:

   WeekDay(dtmToday)
is the same as
   WeekDay(dtmToday, 0)

Since vbUseSystemDayOfWeek has a value of zero, the same result is also returned by

   WeekDay(dtmToday, vbUseSystemDayOfWeek)

as shown




vbMonday = <% =vbMonday %> <br>
vbTuesday = <% =vbTuesday %> <br>
vbWednesday = <% =vbWednesday %> <br>
vbThursday = <% =vbThursday %> <br>
vbFriday = <% =vbFriday %> <br>
vbSaturday = <% =vbSaturday %> <br>
vbSunday = <% =vbSunday %> <br>
vbUseSystemDayOfWeek = <% =vbUseSystemDayOfWeek %>
WeekDay(dtmToday) = 6
WeekDay(dtmToday, 0) = 5
WeekDay(dtmToday, vbUseSystemDayOfWeek)
= 5
WeekDay(dtmToday) =
   <% =WeekDay(dtmToday) %><br>
WeekDay(dtmToday, 0) =
   <% =WeekDay(dtmToday, 0) %><br>
WeekDay(dtmToday, vbUseSystemDayOfWeek) =
   <% =WeekDay(dtmToday, vbUseSystemDayOfWeek) %>

The function WeekDayName() uses an integer to return a day's name string, as here

 

   WeekDayName(1) = Sunday
   WeekDayName(2) = Monday

and

WeekDayName(1) = <% = WeekDayName(1) %><br>
WeekDayName(2) = <% = WeekDayName(2) %>
   WeekDayName(vbSunday) = Sunday
   WeekDayName(vbMonday) = Monday
WeekDayName(vbSunday) =
   <% = WeekDayName(vbSunday) %><br>
WeekDayName(vbMonday) =
   <% = WeekDayName(vbMonday) %>

Get today's date with

   WeekDayName(Weekday(Now)) = Friday

WeekDayName(Weekday(Now)) =
   <% = WeekDayName(Weekday(Now)) %>

But, beware . . .

   WeekDayName(Weekday(Now, vbMonday)) = Thursday

since WeekDayName() uses the system default.

WeekDayName(Weekday(Now, vbMonday)) =
   <% = WeekDayName(Weekday(Now, vbMonday)) %>


Back to the background notes

Return to the main article

xxx,xxx

copyright ©2000 - 2008 Chris Pearson