| PvmTarkistus.java |
1 package kalenteri;
2
3 /**
4 * Pääosin demoista 2 ja 6 lainattu päivämäärän tarkistin.
5 * @author Timo Koski
6 * @version 11.4.2012
7 */
8 public class PvmTarkistus {
9
10 /** Taulukko kuukausien pituuksista. Oma rivi karkausvuosille */
11 public static final int KPITUUDET[][] = {
12 // 1 2 3 4 5 6 7 8 9 10 11 12
13 { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
14 { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }
15 };
16
17
18 /**
19 * Palautetaan tieto siitä onko tutkittava vuosi karkausvuosi vai ei
20 * @param vv tutkittava vuosi
21 * @return 1 jos on karkausvuosi ja 0 jos ei ole
22 */
23 public static int karkausvuosi(int vv) {
24 if ( vv % 400 == 0 ) return 1;
25 if ( vv % 100 == 0 ) return 0;
26 if ( vv % 4 == 0 ) return 1;
27 return 0;
28 }
29
30 /**
31 * Tarkastetaan onko syntaksi oikein.
32 * @param p
33 * @param k
34 * @param v
35 * @return onko päivämäärän syntaksi oikea.
36 */
37 public static boolean tarkistaPvm(int p, int k, int v) {
38 if ((v<1) || (v>2500))
39 return false;
40 if ((k>12) || (k<1))
41 return false;
42 int kv = karkausvuosi(v); //palauttaa 0 jos ei, 1 jos on
43 int pv_lkm = KPITUUDET[kv][k - 1];
44 if ((p > pv_lkm) || (p<1))
45 return false;
46 return true;
47 }
48 }
49