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

Exclusion de responsabilité du contenu obsolète de la base de connaissances

Cet article a été rédigé sur les produits pour lesquels Microsoft n’offre plus aucune prise en charge. Par conséquent, cet article est proposé « en l’état » et ne sera plus mis à jour.

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.

Propriétés

ID d'article : 245564 - Dernière mise à jour : 19 juin 2014 - Révision : 1

Commentaires