siciliaguerrabot2020/Calendario/Calendario.java (view raw)
1/*
2 * To change this license header, choose License Headers in Project Properties.
3 * To change this template file, choose Tools | Templates
4 * and open the template in the editor.
5 */
6package siciliaguerrabot2020.Calendario;
7
8import java.util.ArrayList;
9
10/**
11 *
12 * @author Marco
13 */
14public class Calendario {
15 private ArrayList<Mese> mesi;
16 private int anno;
17 private int mese;
18 private int giorno;
19
20 public Calendario(Data inizio) {
21 this.giorno = inizio.getGiorno();
22 this.anno = inizio.getAnno();
23 this.mese = inizio.getMese();
24
25 this.mesi = new ArrayList<>(12);
26 mesi.add(new Mese("Gennaio", 31));
27 if(isBisestile(anno))
28 mesi.add(new Mese("Febbraio", 29));
29 else
30 mesi.add(new Mese("Febbraio", 28));
31 mesi.add(new Mese("Marzo", 31));
32 mesi.add(new Mese("Aprile", 30));
33 mesi.add(new Mese("Maggio", 31));
34 mesi.add(new Mese("Giugno", 30));
35 mesi.add(new Mese("Luglio", 31));
36 mesi.add(new Mese("Agosto", 31));
37 mesi.add(new Mese("Settembre", 30));
38 mesi.add(new Mese("Ottobre", 31));
39 mesi.add(new Mese("Novembre", 30));
40 mesi.add(new Mese("Dicembre", 31));
41 }
42
43 private boolean isBisestile(int year){
44 return ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0);
45 }
46
47 public Data nextDay(){
48 if(giorno <= mesi.get(mese - 1).getN_giorni() - 1){
49 //incremento il giorno
50 giorno++;
51 } else {
52 if(mese < 12){
53 //incremento il mese
54 mese++;
55 } else {
56 //incremento l'anno
57 mese = 1;
58 anno++;
59 if(isBisestile(anno)){
60 mesi.set(1, new Mese("Febbraio", 29));
61 } else {
62 mesi.set(1, new Mese("Febbraio", 28));
63 }
64 }
65 giorno = 1;
66 }
67 return new Data(giorno, mese, anno);
68 }
69
70 public String nextString(){
71 Data d = nextDay();
72 return d.getGiorno() + " " + mesi.get(d.getMese() - 1).getNome_mese() + " " + d.getAnno();
73 }
74}