Microsoft KB Archive/245564

= How to Determine If a Date Is in a Leap Year Using ASP =

Article ID: 245564

Article Last Modified on 11/21/2006

-

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.
 * 1) 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.
 * 1) 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 %> Leap Year Test <% For X = 1400 to 2000 Step 75 Response.Write X & " is a leap year = " Response.Write IsLeapYearDate("1/1/" & X) & " " Next %> 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.

Additional query words: Y2K

Keywords: kbhowto kbscript kbcodesnippet KB245564

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.