How to Determine if a Date is in a Leap Year Using ASP

ID: Q245564


The information in this article applies to:
  • Microsoft Internet Information Services version 5.0


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...


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

    unless...


  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:
Q214019 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 
For more information on Year 2000 issues, please consult the Microsoft Year 2000 Portal Page at the following URL:
http://www.microsoft.com/y2k/

Microsoft provides programming examples for illustration only, without warranty either expressed or implied, including, but not limited to, the implied warranties of merchantability and/or fitness for a particular purpose. This article assumes that you are familiar with the programming language being demonstrated and the tools used to create and debug procedures. Microsoft support professionals 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 needs. If you have limited programming experience, you may want to contact a Microsoft Certified Solution Provider or the Microsoft fee-based consulting line at (800) 936-5200. For more information about Microsoft Certified Solution Providers, please see the following page on the World Wide Web:

http://www.microsoft.com/mcsp/
For more information about the support options available from Microsoft, please see the following page on the World Wide Web:

http://www.microsoft.com/support/supportnet/overview/overview.asp

Additional query words: Y2K

Keywords :
Version : winnt:5.0
Platform : winnt
Issue type : kbhowto


Last Reviewed: December 2, 1999
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.