| Answer: |
VBScript offers a number of great date functions that can be used in tandem to calculate all sorts of date-related information! One useful function is DateSerial, which constructs a date given a year, month, and day as its three parameters. For example:
Dim myDate myDate = DateSerial(1978, 8, 1)
Response.Write "I was born on " & myDate
|
will produce the output:
I was born on 8/1/78
Another neat function is Day, which will return the day (1 to 31) part of a date. Yet another neat function is DateAdd, which can be used to add various intervals to a date. It takes the form:
retDate = DateAdd(interval, number, date)
|
The interval can be a day, a week, a quarter, a year, a month, a weekday... all sorts of things! (For a full listing of options be sure to read the DateAdd technical docs.)
With these three functions in tandem, we can write a short function that will return the number of days for a given month in a given year. Observe:
Function NumberOfDays(iMonth, iYear) NumberOfDays = Day(DateAdd("d", -1, _ DateSerial(iYear, iMonth + 1, 1))) End Function
|
The NumberOfDays function takes two parameters, a month and year, and calculates the number of days in the month/year. It does this by saying, "What is the day number of the day one day before the first day of the next month?" Pretty neat! A bit wordy, I know, but examine the code and see if you can't determine what it's doing. It's using DateSerial to get the date for the 1st of the month, one month ahead of the passed in month. (DateSerial is smart enough to know to increment iYear if iMonth is 12 (December)...) Once we have this new date, we use DateAdd to add -1 days, which gives us the date of the last day of iMonth. Finally, we use the Day function to pick out just the day number itself. Incredibly cool.
Just read the docs for DateSerial! They even demonstrate getting the last day of a month in one of the examples. So:
Function NumberOfDays(iMonth, iYear) NumberOfDays = Day( DateSerial( iYear, iMonth + 1, 0 ) ) End Function
|
Even cooler?
To learn more, be sure to read the following articles: Date Functions in VBScript
DateAdd technical docs
DateSerial technical docs
Happy Programming!
|