How to Determine If a Date Is in a Leap Year Using ASP (245564)



The information in this article applies to:

  • Microsoft Internet Information Services 5.0

This article was previously published under Q245564

SUMMARY

The method for determining if a given date occurs during a leap year is not as simple as determining whether or not a year is divisible by four. The purpose of this article is to give developers using Microsoft's Active Server Pages (ASP) a method to accurately calculate a leap year.

MORE INFORMATION

The rules for determining if a given date falls during a leap year depend on three criteria:
  1. Is the year evenly divisible by 4? If so, it is a leap year,

    unless...

    Is the year evenly divisible by 100? (for example, 1500?) If so, it is not a leap year,

    unless...

    Is the year evenly divisible by 400? If so, it is a leap year.
  2. Is the year evenly divisible by 100? (for example, 1500?) If so, it is not a leap year,

    unless...

    Is the year evenly divisible by 400? If so, it is a leap year.
  3. Is the year evenly divisible by 400? If so, it is a leap year.
An excellent description for why these rules apply can be found in the following Microsoft Knowledge Base article:

214019 XL2000: Method to Determine Whether a Year Is a Leap Year

The following ASP code defines an ASP function named IsLeapYearDate() that determines if a date passed to it occurs in a leap year. Copy this ASP code and save it to a folder in your Web site that has at least "script" permissions:
<% @Language="vbscript" %>
<%
  Function IsLeapYearDate(dtmTestDate)
    IsLeapYearDate = False
    If IsDate(dtmTestDate) Then
      Dim dtmTempDate
      dtmTempDate = "1/31/" & Year(dtmTestDate)
      dtmTempDate = DateAdd("m", 1, dtmTempDate)
      If Day(dtmTempDate) = 29 Then IsLeapYearDate = True
    End If
  End Function
%>
<html>
<head><title>Leap Year Test</title></head>
<body>
<pre>
<%
  For X = 1400 to 2000 Step 75
    Response.Write X & " is a leap year = "
    Response.Write IsLeapYearDate("1/1/" & X) & "<br>"
  Next
%>
</pre>
</body>
</html>
				
When this page is browsed, you should see the following output:
1400 is a leap year = False
1475 is a leap year = False
1550 is a leap year = False
1625 is a leap year = False
1700 is a leap year = False
1775 is a leap year = False
1850 is a leap year = False
1925 is a leap year = False
2000 is a leap year = True
				
Microsoft provides programming examples for illustration only, without warranty either expressed or implied. This includes, but is not limited to, the implied warranties of merchantability or fitness for a particular purpose. This article assumes that you are familiar with the programming language that is being demonstrated and with the tools that are used to create and to debug procedures. Microsoft support engineers can help explain the functionality of a particular procedure, but they will not modify these examples to provide added functionality or construct procedures to meet your specific requirements.

Modification Type:MajorLast Reviewed:6/23/2005
Keywords:kbCodeSnippet kbhowto kbScript KB245564