Parliamoci chiaro, anche se sei un Java Enthusiast della prima ora, anche se ami questo linguaggio quanto me, la gestione degli oggetti java.util.Date e java.sql.Date non ti è mai andata giù, vero? Ti sei addirittura convinto, col tempo, che avere un unico oggetto per gestire data e ora fosse tutto sommato comodo! E pazienza per quei metodi deprecati (oppure usavi la libreria Joda-Time…), beh, era vero nel 1998, si il secolo scorso, proprio così, perchè da allora ben poco o nulla è cambiato. Date un occhiata al codice sorgente della classe java.util.Date.
* @author James Gosling
* @author Arthur van Hoff
* @author Alan Liu
* @see java.text.DateFormat
* @see java.util.Calendar
* @see java.util.TimeZone
* @since JDK1.0
*/
public class Date implements java.io.Serializable, Cloneable, Comparable<Date> {
Avete notato @since JDK1.0
? E che dire di quei costuttori deprecati tanto comodi:
* @param year the year minus 1900.
* @param month the month between 0-11.
* @param date the day of the month between 1-31.
* @see java.util.Calendar
* @deprecated As of JDK version 1.1,
* replaced by <code>Calendar.set(year + 1900, month, date)</code>
* or <code>GregorianCalendar(year + 1900, month, date)</code>.
*/
@Deprecated
public Date(int year, int month, int date) {
this(year, month, date, 0, 0, 0);
}
Notare @deprecated As of JDK version 1.1
Per non parlare dei metodi come getYear()
, fantastico! E se… “oh! domani si va in produzione non facciamo scherzi! codice che gira non si tocca! tanto i metodi deprecati ci seppelliscono tutti, figuarati, Oracle non li leva fino al 2030”
* @deprecated As of JDK version 1.1,
* replaced by <code>Calendar.get(Calendar.YEAR) - 1900</code>.
*/
@Deprecated
public int getYear() {
return normalize().getYear() - 1900;
}
Si, forse hai ragione (lo hai pensato anche tu, non negarlo). Ora però, se ci fosse qualcosa di meglio che ti semplificasse la vita, non lo useresti?
Beh, la prima impressione con LocalTime e LocalDate non è stata eccezionale, potevano fare qualcosa in più, per esempio rendere più immediato il passare dai vecchi oggetti Date ai nuovi LocalDate e LocalTime, ma se ci pensate, forse è meglio così, nuovo progetto, solo oggetti LocalDate e LocalTime.
Per oggi iniziamo con qualcosa di molto elementare, ma che facciamo di sovente
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
passare da una rappresentazione testuale (HH:mm) ad un oggetto LocalTime, e viceversa. Sotto trovate il codice.
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm");
LocalTime localTime1 = LocalTime.now();
String localTime1AsString = formatter.format(localTime1);
System.out.println("localTime1AsString:"+localTime1AsString);
//From String HH:mm To LocalTime object (parsing)
LocalTime lTime = LocalTime.parse("23:59",formatter);
System.out.println("lTime.toString()"+lTime.toString());