Ejemplos de LocalDate, LocalTime y LocalDateTime


public static void main(String[] args) {
Scanner in=new Scanner(System.in);
System.out.println("Introduce tu fecha de cumpleaños en formato ISO");
String f=in.next();
LocalDate fecha = LocalDate.parse(f);

System.out.println("Naciste en "+fecha.getDayOfWeek());
fecha=LocalDate.now();
System.out.println("Mañana será "+fecha.plusDays(1));
System.out.println("La semana que viene será "+fecha.plusWeeks(1));
System.out.println("El año que viene será "+fecha.plusYears(1));
System.out.println("Hoy es el dia "+dia(LocalDate.now())+" del mes");


}

public static int dia(LocalDate fecha) {
return fecha.getDayOfMonth();
}


public static void main(String[] args) {

// Para crear una variable que permita guardar una fecha usamos
// LocalDate
// fecha Tiene el día de hoy LocalDate tiene algunos métodos estáticos
// Y uno de ellos es now() que nos devuelve la fecha de hoy
LocalDate fecha = LocalDate.now();
// Otra manera de crear una fecha es utilizar of
// Usa de parámetros: año, mes y día
LocalDate fecha2 = LocalDate.of(2019, 02, 20);
// Otra manera más es utilizar parse que intenta convertir
// Una cadena en una fecha
LocalDate fecha3 = LocalDate.parse("2015-08-10");

System.out.println(fecha);
// Imprimir en formato ISO (estándar, como el mysql)
System.out.println(fecha.format(DateTimeFormatter.ISO_DATE));
System.out.println(fecha.format(DateTimeFormatter.ISO_LOCAL_DATE));
// Formatear con un patrón definido (dd-MM-yyy)
System.out.println(fecha.format(DateTimeFormatter.ofPattern("dd-MM-yyy")));
// Formatear como lo tengamos configurado en el sistema (y tenemos largo, medio
// o corto)
System.out.println(fecha.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL)));
System.out.println(fecha.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM)));
System.out.println(fecha.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT)));

System.out.println(fecha2);
System.out.println(fecha3);

// A una fecha le puedo añadir o quitar días, meses, semanas y años
LocalDate manyana = LocalDate.now().plusDays(1);
LocalDate ayer = LocalDate.now().minusDays(1);
LocalDate semana_que_viene = LocalDate.now().plusWeeks(1);
System.out.println(manyana);
System.out.println(ayer);
System.out.println(semana_que_viene);

// Puedo añadir o restar unidades de tiempo
LocalDate mesAnterior = LocalDate.now().minus(1, ChronoUnit.MONTHS);
// Podemos añadir Periodos que es parecido: permite añadir
// meses, dias, años o combinaciones
LocalDate finalDate = manyana.plus(Period.ofDays(5));

System.out.println(finalDate);
System.out.println(mesAnterior);

// Puedo obtener de una fecha cualquier valor que me interese
// El día de la semana es una clase que nos permite obtener el nombre
// Y el número
DayOfWeek dia = LocalDate.parse("2016-06-12").getDayOfWeek();
// El día del mes es un entero
int mes = LocalDate.parse("2016-06-12").getDayOfMonth();

// En el caso de los meses
int m = LocalDate.parse("2016-06-12").getMonthValue();
Month mon = LocalDate.parse("2016-06-12").getMonth();

// Las clases DayOfWeek y Month nos permiten recuperar el nombre
// Del día de la semana y del mes (en inglés) pero también
// Su número
System.out.println(dia);
System.out.println(dia.ordinal());
System.out.println(mes);
System.out.println(m);
System.out.println(mon);
System.out.println(mon.ordinal());

// Saber si un año es bisiesto
boolean bisiesto = LocalDate.now().isLeapYear();
System.out.println(bisiesto);
boolean antes = LocalDate.parse("2016-06-12").isBefore(LocalDate.parse("2016-06-11"));
System.out.println(antes);
boolean despues = LocalDate.parse("2016-06-12").isAfter(LocalDate.parse("2016-06-11"));
System.out.println(despues);
// El with nos permite obtener el primer día y el último del mes
LocalDate primerDiaMes = LocalDate.parse("2016-06-12").with(TemporalAdjusters.firstDayOfMonth());
System.out.println(primerDiaMes);

// Formato de fecha Y hora
LocalDateTime fechaHora = LocalDateTime.parse("2016-06-12T10:00");
System.out.println(fechaHora);
System.out.println(fechaHora.format(DateTimeFormatter.ofPattern("dd-MM-yyy HH:mm")));
System.out.println(fechaHora.format(DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM)));
System.out.println(fechaHora.format(DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT)));
LocalDateTime inicioDia = LocalDate.parse("2016-06-12").atStartOfDay();
System.out.println(inicioDia);

// También tenemos la clase sólo para la hora
LocalTime ahora = LocalTime.now();
System.out.println(ahora);
// Podemos obtenerla de una cadena
LocalTime seisYMedia = LocalTime.parse("06:30");
System.out.println(seisYMedia);
// Podemos indicar hora, minutos y segundos
LocalTime seisYMedia2 = LocalTime.of(6, 30);
System.out.println(seisYMedia2);
LocalTime seisYMedia3 = LocalTime.of(6, 30,15);
System.out.println(seisYMedia3);
//Podemos añadir Cronounidades
LocalTime sieteYMedia = LocalTime.parse("06:30").plus(1, ChronoUnit.HOURS);
System.out.println(sieteYMedia);

// Podemos añadir duraciones, lo que en Date es Period
LocalTime siete = seisYMedia.plus(Duration.ofMinutes(30));
System.out.println(siete);

}

public static void main(String[] args) {
Scanner in=new Scanner(System.in);

// ¿En qué día caen los primeros de cada mes este año?
for(int i=1;i<12;i++) {
LocalDate fecha= LocalDate.of(2021, i, 1);
System.out.println(fecha.getDayOfWeek());
System.out.println(finDeSemana(fecha));
}

System.out.println("Introduce fecha factura");
String f=in.next();
System.out.println("El vencimiento es dentro de 15 días:");
LocalDate fecha=LocalDate.parse(f).plusDays(15);
System.out.println(fecha.format(DateTimeFormatter.ofPattern("dd/MM/yyyy")));
System.out.println(fecha.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL)));
System.out.println(fecha.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG)));
System.out.println(fecha.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM)));
System.out.println(fecha.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT)));
if (finDeSemana(fecha)) {
System.out.println("Que cae en fin de semana");
}

}

// Función que nos diga si un día concreto es un fin de semana

public static boolean finDeSemana(LocalDate fecha) {
return fecha.getDayOfWeek()==DayOfWeek.SATURDAY ||
fecha.getDayOfWeek()==DayOfWeek.SUNDAY;
}
public static int dia(LocalDate fecha) {
return fecha.getDayOfMonth();
}