Realizzare un programma java che converte una data espressa dai sei valori: anno, mese, giorno, ore, minuti e secondi, converte tale data nel numero di millisecondi che la distanziano dalla data 1970-01-01 ore 00:00:00. Il programma deve avere un main che chiede i sei valori all'utente e poi li passa ad un metodo che, ricevendo i sei parametri, li converte in un long che corrisponde ai millisecondi e ritorna tale valore come risultato del metodo. Alla fine il main visualizza il numero in millisecondi trovato.
Verificare il corretto funzionamento del programma usando il sito https://www.epochconverter.com/
Manca "solo" almeno si spera, la gestione degli errori
public class Es {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long anniConvertiti;
System.out.println("Inserisci l'anno, mese, giorno, ore, minuti, e secondi ");
System.out.print("Anno: ");
long anno = sc.nextLong();
System.out.print("Mese: ");
long mese = sc.nextLong();
System.out.print("Giorno: ");
long giorno = sc.nextLong();
System.out.print("Ore: ");
long ore = sc.nextLong();
System.out.print("Minuti: ");
long minuti = sc.nextLong();
System.out.print("Secondi: ");
long secondi = sc.nextLong();
anniConvertiti = converisoneAnniMillisecondi(anno, mese, giorno, ore , minuti, secondi);
long mesiCovertiti = giorniMesi(mese , anno);
System.out.println(anniConvertiti + " " + mesiCovertiti + " " + giorno );
}
public static long converisoneAnniMillisecondi (long anno , long mese , long giorno , long ore , long minuti , long secondi ){
long giorni = 0;
long risultato = 0;
while (anno > 1970) {
if (annoBisestile(anno)){
giorni = giorni + 366;
}else {
giorni = giorni + 365;
}
anno --;
}
while (anno < 1970){
if (annoBisestile(anno)){
giorni = giorni - 366;
}else {
giorni = giorni - 365;
}
anno ++;
}
risultato = giorni * 86400000;
giorno = giorno * 86400000;
return risultato;
}
public static boolean annoBisestile (long anno ) {
if (anno % 400 == 0 || (anno % 4 == 0 && (anno % 100 != 0)) ) {
return true;
} else {
return false;
}
}
public static long giorniMesi (long mese, long anno){
if (mese == 4 || mese == 6 || mese == 9 || mese == 11) {
return 30 * 86400000L ;
}else if (mese == 2 ) {
if (annoBisestile(anno)) {
return 29 * 86400000L;
} else {
return 28 * 86400000L;
}
} else {
return 31 * 86400000L;
}
}
}