source: trunk/SRC/Calendar/leapyr.pro @ 150

Last change on this file since 150 was 137, checked in by smasson, 18 years ago

review of Colors and Calendar routines

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 1.5 KB
Line 
1;-----------------------------------------------------------------
2;+
3;
4; @file_comments
5; determine whether the input year is a leap year or not
6; Very useful for finding number of days in a year.
7; eg. NUM_DAYS_IN_YR = 365 + leapyr(year)
8;
9; @categories calendar
10;
11; @param year {in}{required}
12; year to be tested as a leap year. Can be scalar or array
13;
14; @returns
15; 0 then not a leap year, 1 then year is a leap year
16; with the same number of elements than year.
17;
18; @uses cm_4cal
19;
20; @examples
21; IDL> result = leapyr(2000)
22;
23; @history
24;
25; Originally Written by: Trevor Harris, Physics Dept., University of Adelaide,
26;20/09/88
27;
28; November 2004: correction for century years... S. Masson;
29;
30; Every year divisible by 4 is a leap year.
31; But every year divisible by 100 is NOT a leap year
32; Unless the year is also divisible by 400, then it is still a
33; leap year.
34; This means that year 1800, 1900, 2100, 2200, 2300 and 2500 are
35; NOT leap years, while year 2000 and 2400 are leap years.
36; + supress the automatic change 89 -> 1989
37;
38; June 2005 update for new commons, Sebastien Masson.
39;
40; @version $Id$
41;
42;-
43;------------------------------------------------------------
44function leapyr, year
45; include commons
46;
47  compile_opt idl2, strictarrsubs
48;
49@cm_4cal
50  yr = long(year)
51  IF n_elements(key_caltype) EQ 0 THEN key_caltype = 'greg'
52;
53  IF key_caltype NE 'greg' THEN BEGIN
54    sd = size(yr, /dimensions)
55    IF sd[0] EQ 0 THEN return, 0b ELSE return, bytarr(size(yr, /dimensions))
56  ENDIF ELSE return, (yr MOD 4 EQ 0)*((yr MOD 100 NE 0) + (yr MOD 400 EQ 0))
57
58end
Note: See TracBrowser for help on using the repository browser.