Data in italiano in java

Prima di un corso che ho seguito (che tra l'altro non era incentrato sulla programmazione,ma la sfiorava solo qua e là) la data in italiano la facevo tramite un switch:


public static String dataoggi(){

Calendar c=new GregorianCalendar();
String time,day,month,secondi;
time=day=month=secondi=null;

int gmese=c.get(Calendar.DAY_OF_MONTH);
int giorno=c.get(Calendar.DAY_OF_WEEK);
int mese=c.get(Calendar.MONTH);
int anno=c.get(Calendar.YEAR);
int ore=c.get(Calendar.HOUR_OF_DAY);
int min=c.get(Calendar.MINUTE);
int sec=c.get(Calendar.SECOND);

switch(giorno){
case 1: day="Domenica"; break;
case 2: day="Lunedi"; break;
case 3: day="Martedi"; break;
case 4: day="Mercoledi"; break;
case 5: day="Giovedi"; break;
case 6: day="Venerdi"; break;
case 7: day="Sabato"; break;
default: day="Errore";
}

switch(mese){
case 0: month="Gennaio"; break;
case 1: month="Febbraio"; break;
case 2: month="Marzo"; break;
case 3: month="Aprile"; break;
case 4: month="Maggio"; break;
case 5: month="Giugno"; break;
case 6: month="Luglio"; break;
case 7: month="Agosto"; break;
case 8: month="Settembre"; break;
case 9: month="Ottobre"; break;
case 10: month="Novembre"; break;
case 11: month="Dicembre"; break;
default: month="Errore";
}
// ci assicuriamo che stampi 04 non 4 per i minuti
time=Integer.valueOf(min).toString();
if(min<10)
time="0"+time;
// ci assicuriamo che stampi 04 non 4 per i secondi
secondi=Integer.valueOf(sec).toString();
if(sec<10)
secondi="0"+secondi;

s=day+" "+gmese+" "+month+" "+anno+",ore "+ore+":"+time+":"+secondi;
return s;

}

Ci vuole un po' ma alla fine si arriva al risultato. Una maniera più efficace è di usare le Locali:

import java.util.*;
import java.text.*;

class ShowItalianDateJava {

public static void main(String [] argv) {

Locale itLocale = new Locale("it", "IT");
DateFormat dfshort = DateFormat.getDateInstance(DateFormat.SHORT, itLocale);
DateFormat dflong = DateFormat.getDateInstance(DateFormat.LONG, itLocale);
DateFormat dftimedate = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.FULL,itLocale);

Date today = new Date();
System.out.println("SHORT: "+dfshort.format(today));
System.out.println("LONG: "+dflong.format(today));
System.out.println("TIME - MEDIUM e FULL: "+dftimedate.format(today));
}
}


Il codice è molto più compatto,niente switch e mostra diversi formati di rappresentazione della data.

0 comments:

Byte Strike Blog - Designed by Posicionamiento Web | Bloggerized by GosuBlogger